正規表示式 後向引用

2021-06-15 22:53:42 字數 1198 閱讀 9940

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

後向引用用於重複搜尋前面某個分組匹配的文字。例如,/1

代表分組1匹配的文字

。難以理解?請看示例:

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

可以用來匹配重複的單詞

,像go go

, kitty kitty

。首先是乙個單詞

,也就是單詞開始處和結束處之間的多於乙個的字母或數字

(/b(/w+)/b

),然後是1個或幾個空白符

(/s+

),最後是前面匹配的那個單詞

(/1)。

你也可以自己指定子表示式的組名。要指定乙個子表示式的組名,請使用這樣的語法:(?/w+)

(或者把尖括號換成'

也行:(?'word'/w+)

),這樣就把/w+

的組名指定為word

了。要反向引用這個分組捕獲的內容,你可以使用/k

,所以上乙個例子也可以寫成這樣:/b(?/w+)/b/s+/k/b。

使用小括號的時候,還有很多特定用途的語法。下面列出了最常用的一些:

表4.分組語法

捕獲(exp)

匹配exp,並捕獲文字到自動命名的組裡

(?exp)

匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp)

匹配exp,不捕獲匹配的文字,也不給此分組分配組號

位置指定

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

(?!exp)

匹配後面跟的不是exp的位置

(?匹配前面不是exp的位置

注釋(?#comment)

這種型別的組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀

我們已經討論了前兩種語法。第三個(?:exp)

不會改變正規表示式的處理方式,只是這樣的組匹配的內容不會像前兩種那樣**獲到某個組裡面。

正規表示式 後向引用

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

正規表示式 後向引用

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

正規表示式的後向引用

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