2 8 後向引用

2021-04-16 00:45:06 字數 2111 閱讀 5522

當乙個正規表示式被分組之後,每乙個組將自動被賦予乙個組號,該組號可以代表該組的表示式。其中,組號的編制規則為:從左到右、以分組的左括號「(」為標誌,第乙個分組的組號為1,第二個分組的組號為2,以此類推。

反向引用提供查詢重複字元組的方便的方法。它們可被認為是再次匹配同乙個字串的快捷指令。後向引用可以使用數字命名(即預設名稱)的組號,也可以使用指定命名的組號。它們的具體說明如表2-8所示。

表2-8後向引用

表示式 說明

/數字使用數字命名的後向引用。 /k

使用指定命名的後向引用。

注意:在表2-8中,表示式/k

為.net framework所支援。

以下正規表示式匹配具有兩個重複字元的單詞。

/b(/w)/1/b

(65)

注意:正規表示式/b(/w)/1/b和/b(/w)/w/b並不等效,第乙個表示式只匹配兩個相同字元的單詞,而第二個表示式匹配具有兩個字元(可以相同,也可以不相同)的單詞。

以下正規表示式首先匹配單詞的開頭處,然後匹配乙個字元和數字,再重複該字元和數字,最後是單詞的結尾處。

/b(/w)(/d)/1/2/b

(66)

使用工具regex tester分別測試了正規表示式(65)和/b(/w)/w/b,結果如圖所示。在測試結果中,正規表示式/b(/w)/1/b只匹配了單詞「aa」,而正規表示式/b(/w)/w/b可以匹配單詞「aa」和「ab」。

以下正規表示式匹配以兩個重複字元結尾的單詞。

/b/w*(/w+)/1/b

(67)

以下正規表示式匹配重複出現的單詞。

/b(/w+)/b/s+/1/b

(68)

上述正規表示式/b(/w+)/b/s+/1/b匹配的具體過程如下:

(1)表示式/b(/w+)/b匹配乙個單詞,且單詞的長度至少為1;

(2)表示式/s+匹配乙個或多個空白字元;

(3)表示式/1將重複子表達(/w+)匹配的內容,即重複匹配的單詞;

(4)匹配單詞的結束位置。

分組不但可以使用數字作為組號,而且還可以使用自定義名稱作為組號。以下兩個正規表示式都是將分組後的子表示式/w+命名為「word」。

(?/w+)

(69)

(?'word'/w+)

(70)

因此,正規表示式/b(/w+)/b/s+/1/b和以下正規表示式等價,它們都匹配重複出現的單詞。

/b(?/w+)/b/s+/k/b(71)

以下正規表示式和正規表示式/b/w*(/w+)/1/b等價,它也是匹配以兩個重複字元結尾的單詞。

/b/w*(?/w+)/k/b(72)

分組子表示式(?)將元字元括在其中,並強制正規表示式引擎記住該子表示式匹配,同時使用「name」將該匹配進行命名。反向引用/k使引擎對當前字元和以名稱「name」儲存的先前匹配字元進行比較,從而匹配具有重複字元的字串。正規表示式中的常用分組說明如表2-9所示。

表2-9常用分組說明 字元

說明(experssion)

匹配字串experssion,並將匹配的文字儲存到自動命名的組裡。

(?experssion)

匹配字串experssion,並將匹配的文字以name進行命名。該名稱不能包含標點符號,不能以數字開頭。

(?:experssion)

匹配字串experssion,不儲存匹配的文字,也不給此組分配組號。

(?=experssion)

匹配字串experssion前面的位置。

(?!experssion)

匹配後面不是字串experssion的位置。

(?<=experssion)

匹配字串experssion後面的位置。 (?

匹配前面不是字串experssion的位置。

(?>experssion)

只匹配字串experssion一次。

正規表示式 後向引用

使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。後向引用用於重複搜尋前面某個分組匹配的文字。例如,1...

正規表示式 後向引用

使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。分組0對應整個正規表示式 實際上組號分配過程是要從左...

正規表示式 後向引用

使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。後向引用用於重複搜尋前面某個分組匹配的文字。例如,1...