正規表示式分組例項詳解
正規表示式分組:
如果想匹配3個數字,正規表示式可以用如下寫法:
\d{3}
以上程式碼使用重複量詞可以匹配3位數字。
但是在實際應用中,往往需要重複多個字元,例如我想重複ab兩個字元,使用以下程式碼就不合適了,程式碼如下:
ab{3}
以上正規表示式只能夠重複3次b。
為了實現重複多個字元可以使用小括號來指定子表示式或者說分組來實現此功能,例如:
(ab){3}
上面的正則就可以重複ab了。
所謂的分組就是使用小括號將一些項包括起來,使其成為獨立的邏輯域,那麼就可以像處理一個獨立單元一樣去處理小括號的內容。
下面看一段程式碼例項:
(\d{1,3}\.){3}\d{1,3}
上面是一個簡單的ip匹配正規表示式。由小括號包裹的內容會被作為一個獨立的邏輯域進行操作。
分組的作用:
在正規表示式中,分組具有舉足輕重的作用,下面就簡單對它的功能做一下簡單的介紹。
一.起到原始的分組作用:
把單獨的專案進行分組,以便合成子表示式,這樣就可以像處理一個單獨的字元那樣,對其應用|、+、*或者?等元字元來操作它們。
例項程式碼如下:
var str="I love javascript and java"; console.log(str.match(/java(script)?/gi));
由以上程式碼的執行結果可以看出,正規表示式既可以匹配字串javascript也可以匹配java,這是因在正規表示式中採用了分組,並且使用重複量詞?,可以使前面的子表示式重複0次或者1次。
二.定義子模式:
分組另一個非常重要的作用就是在完整的模式中定義子模式。
當一個正規表示式成功的和目標字串相匹配時,可以從目標字串中抽出和小括號中字表示式相匹配的部分。
假如我們匹配的是以一個數字開頭的後面跟著一個或者多個不區分大小寫的字母的字串,正規表示式可以這樣寫:
/\d[a-zA-Z]+/
假如我們真正關心和需要的是開頭的數字,那麼就可以將正規表示式的數字部分放入小括號就可以從檢索到的匹配中抽取數字.
/(\d)[a-zA-Z]+/
三.引用子表示式:
正則表達語法中可以在同一個表示式中的後部引用前面的子表示式。這是通過在"\"後面跟隨數字實現的。此數字指定了小括號字表示式在正規表示式中的位置,例如\1是引用的第一個帶有圓括號的子表示式,自然\2就是第二個帶有圓括號的子表示式。
特別注意:由於子表示式是可以相互巢狀的,那麼計運算元表示式的位置的時候,只要確定左括號的位置即可。例如:
/(java(script))/
在以上正規表示式中,巢狀的子表示是可以用\2表示。
對於子表示式的引用,並不是引用的匹配模式,而是對子表示匹配內容的引用。一般來說對子表示式的引用一般是用來實施一條約束,看下面的程式碼:
/(['"])[^'"]*\1/
通常情況下左右引號是相匹配的,如果前面是雙引號,那麼結尾也要是雙引號,前面是單引號那麼結尾也必須是單引號,並且字串中間不能夠再出現其他的引號,例如:
"指令碼之家歡迎您"
'指令碼之家歡迎您'
那麼上面的正規表示式就實現此功能,當前面的子表示式匹配單引號的時候,那麼後面的\1也就表示的是單引號,如果子表示匹配的雙引號,那麼後面的\2就表示的是雙引號。
非引用型分組:
分組會佔用一定的系統資源,尤其是正規表示式較長的時候會降低匹配速度。有時候僅僅是為了設定一個分組,並不需要引用,那麼使用非引用型別分組將會是一個良好的選擇。
/(java(?:script))/
以上正則就是使用非引用分組,只要在左括號後面加上一個?:即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015106/viewspace-2871382/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 正規表示式分組詳解
- 例項程式碼詳解正規表示式匹配換行
- 正規表示式例項蒐集,通過例項來學習正規表示式。
- Python 正規表示式模組詳解Python
- Java 正規表示式例項操作Java
- 詳解正規表示式
- 正規表示式之零寬斷言例項詳解【基於PHP】PHP
- 通過js正規表示式例項學習正規表示式基本語法JS
- Python正規表示式詳解Python
- Linux正規表示式詳解Linux
- 詳解 Python 正規表示式Python
- 正規表示式教程之匹配一組字元詳解字元
- JavaScript正規表示式校驗非正整數例項JavaScript
- JavaScript正規表示式備忘單附例項JavaScript
- MySQL-正規表示式詳解MySql
- PHP preg match正規表示式函式的操作例項PHP函式
- Java 正規表示式捕獲組分類Java
- Python正規表示式 findall函式詳解Python函式
- 正規表示式詳解及實戰
- python爬蟲 正規表示式詳解Python爬蟲
- Java 異常處理與正規表示式詳解,例項演練及最佳實踐Java
- java 正規表示式 舉例Java
- JavaScript正規表示式校驗非零的正整數例項JavaScript
- 正規表示式 第三篇:分組匹配
- js正規表示式常用函式詳解(續)JS函式
- JavaScript正規表示式校驗非負整數例項JavaScript
- Python3之正規表示式詳解Python
- 正規表示式教程之位置匹配詳解
- Python正規表示式實現非捕獲分組Python
- Oracle中的正規表示式(及函式)詳解Oracle函式
- 簡單介紹正規表示式拆分url例項程式碼
- PHP正規表示式模式修飾符詳解PHP模式
- Python 正規表示式 re 模組Python
- 正規表示式(三):pythonre模組Python
- python re模組 正規表示式Python
- Java 正規表示式——捕獲組Java
- python正規表示式(re模組)Python
- python正規表示式 小例幾則Python