使用小括號指定乙個子表示式後,匹配這個子表示式的文字(也就是此分組捕獲的內容)可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是:從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。
分組0對應整個正規表示式
實際上組號分配過程是要從左向右掃瞄兩遍的:第一遍只給未命名組分配,第二遍只給命名組分配--因此所有命名組的組號都大於未命名的組號
你可以使用(?:exp)這樣的語法來剝奪乙個分組對組號分配的參與權.
後向引用用於重複搜尋前面某個分組匹配的文字。例如,\1代表分組1匹配的文字。難以理解?
請看示例:
\b(\w+)\b\s+\1\b可以用來匹配重複的單詞,像go go, 或者kitty kitty。這個表示式首先是乙個單詞,也就是單詞開始處和結束處之間的多於乙個的字母或數字(\b(\w+)\b),這個單詞會**獲到編號為1的分組中,然後是1個或幾個空白符(\s+),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞)(\1)。
你也可以自己指定子表示式的組名。要指定乙個子表示式的組名,請使用這樣的語法:
(?\w+)
#或者把尖括號換成'也行:
(?'word'\w+))#這樣就把\w+的組名指定為word了
#要反向引用這個分組捕獲的內容,你可以使用\k
\b(?\w+)\b
\s+\k
\b
使用小括號的時候,還有很多特定用途的語法。下面列出了最常用的一些:
第三個(?:exp)不會改變正規表示式的處理方式,只是這樣的組匹配的內容不會像前兩種那樣**獲到某個組裡面,也不會擁有組號。「我為什麼會想要這樣做?」——好問題,你覺得為什麼呢?
本文參考:
[
正規表示式 後向引用
使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。後向引用用於重複搜尋前面某個分組匹配的文字。例如,1...
正規表示式 後向引用
使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。後向引用用於重複搜尋前面某個分組匹配的文字。例如,1...
正規表示式的後向引用
使用小括號指定乙個子表示式後,匹配這個子表示式的文字 也就是此分組捕獲的內容 可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是 從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。後向引用用於重複搜尋前面某個分組匹配的文字。例如,1...