天天看點

飛起來的正規表達式一、術語與操作符二、比對捕獲的片段

飛起來的正規表達式一、術語與操作符二、比對捕獲的片段

1)精确比對

如果一個字元不是特殊字元或操作符,則表示該字元必須在表達式中出現。

例如“/test/”,就表示“t”後面跟着“e”,“e”後面跟着“s”,“s”後面跟着“t”。

2)比對一類字元

很多時候是想比對一個有限字元集中的某一個字元。

例如“[abc]”,就是要比對“a”、“b”或“c”中的任意一個字元。

例如“[^abc]”,就是除了“a”、“b”、“c”之外的任意字元。

例如“[a-m]”,就是從“a”到“m”之間的任意字元。

3)轉義

并不是所有字元和其字元字面量都是等價的。

例如比對“$”、“.”這種特殊字元,需要添加“\”反斜杠,“\$”、“\.”。

4)比對開始與比對結束

經常需要確定模式比對一個字元串的開始,或者一個字元串的結束。

“/^test/”表示以“test”開始,“/test$/”表示以“test”結尾。

5)重複出現

1. “?”表示出現一次或不出現,例如“/t?est/”可以比對“test”或“est”。

2. “+”表示出現一次或多次,例如“/t+est/”可以比對“test”、“ttest”。

3. “*”表示出現零次或多次,例如“/t*est/”可以比對“est”、“test”。

4. “{number}”表示指定出現的次數,例如“/a{4}/”可以比對“aaaa”。

5. “{number,number}”兩個數字表示重複次數區間,例如“/a{1,3}/”可以比對“aa”、“aaa”或“aaaa”。

6. “{number,}”次數區間的第二個數字可選,表示一個開區間。例如“/a{1,}/”比對連續2個“a”或更多的“a”。

7. 重複操作預設是貪婪比對,如果要非貪婪(隻做一次比對)的可以在操作符後面加“?”,例如“*?”、“+?”。

6)預定義字元類

有一些字元是不可能用字面量字元來表示的(例如回車)。

還有一些經常想比對的字元類,例如小數位數或一組空白字元。

飛起來的正規表達式一、術語與操作符二、比對捕獲的片段

7)分組

如果将操作符應用于一組術語,可以添加小括号。

例如“/(ab)+/”比對一個或多個“ab”字元串。

當用括号進行分組的時候,就建立了捕獲(capture)。

8)或操作符

可以用“|”表示或的關系。

例如“/a|b/”比對“a”或“b”。

9)反向引用

在反斜杠後面加一個要引用的捕獲數量,該數字從1開始,例如“\1”、“\2”。

例如“/<(\w+)>(.+)<\/\1>/”比對“<b>strong</b>”,不用反向引用是無法做到的。

1)執行簡單的捕獲

match傳回的第一個索引的值總是該比對的完整結果,然後是每個後續捕獲結果。

2)用全局表達式進行比對

在進行局部比對時,隻有一個執行個體被比對了,并且該比對的捕獲結果也傳回了。

在進行全部比對時,傳回的是比對結果的清單。

exec方法儲存了上次調用的狀态,這樣每個後續調用就可以繼續下去了,直到全局比對。每一個調用傳回的都是下一個比對及其比對内容。

match中的内容如下,這裡就顯示兩個,其他類似的,下面的index就是目前字元串開始比對的索引值。

飛起來的正規表達式一、術語與操作符二、比對捕獲的片段
飛起來的正規表達式一、術語與操作符二、比對捕獲的片段

3)捕獲的引用

有兩種方法可以引用捕獲到的比對結果:自身比對,替換字元串。

1. 自身比對

2.替換字元串

替換字元串“replace”方法,與反向引用不一樣,這裡使用“$1”、“$2”文法表示每個捕獲的數字。

1. $i (i為數字) : 從左到右正則子表達式所比對的文本。

2. $&:與正規表達式比對的全文本。

3. $`(頓号):比對字元串的左邊文本。

4. $’(單引号):比對字元串的右邊文本。

5. $$:比對$自己。

4)沒有捕獲的分組

該表達式隻會為外層的括号建立捕獲。

    本文轉自 咖啡機(K.F.J)   部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/6048862.html,如需轉載請自行聯系原作者