一、捕獲組的概念:
捕獲組是把多個字元當乙個單獨單元進行處理的方法,它通過對括號內的字元分組來建立。根據的自己的需求,用小括號(),將一段正規表示式劃分成不同的部分,預設次序一般是從左到右(ps:必須注意普通捕獲組和命名捕獲組的區別)。
舉例:表示式 "(x)(y\\w*)(z)" 中,存在四個這樣的組:
分組0.(x)(y\\w*)(z) //一般原組預設為分組0
分組1. x
分組2. y\\w*
分組3. z
捕獲的子串行稍後可以通過 back 引用在表示式中使用,也可以在匹配操作完成後從匹配器獲取。
以 (?) 開頭的組是純的非捕獲組,它不捕獲文字,也不針對組合計進行計數。
三.back引用:\n
檢查字元類重複是採用正規表示式的向後掃瞄來處理來處理。圓括號在正規表示式中有幾種不同的用法,乙個就是能提供組合型別,組合型別用來儲存所匹配的結果或部分匹配的結果(以便後面能用到),即使遇到有相同的模式。在同樣的正則表達中,可能(也通常期望)不止有乙個組合型別。在第n個組合型別中匹配結果可以通過向後掃瞄來獲取到。向後掃瞄使得搜尋重複的單詞非常簡單:\b(\w+)\s+\1\b,如"go go"或"kitty kitty"。(\1表示組1匹配的文字,如go或kitty)
後向引用用於重複搜尋前面某個分組匹配的文字,back引用的是同個字串中的前面捕獲組。例如,\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。
四:在另乙個字串引用捕獲組的內容的方法("$"):
class regexdemo
public static void replacealldemo(string str,string reg,string newstr)
}
內容出處: 解惑正規表示式中的捕獲
讀jquery原始碼,其中不可避免的要弄明白正規表示式,在此對非捕獲組 non capturing 進行了一些梳理。x x x x 要書明白捕獲,就要先從分組開始。重複單字元我們可以使用限定符,如果重複字串,用什麼呢?對!用小括號,小括號裡包裹指定字表示式 子串 這就是分組。之後就可以限定這個子表示...
Java正規表示式
正規表示式結構簡介 字元 x 字元 x 反斜槓 0n 十進位制數 0 n 7 0nn 十進位制數 0nn 0 n 7 0mnn 十進位制數 0mnn 0 m 3,0 n 7 xhh 十六進製制數 0xhh uhhhh 十六進製制數 0xhhhh t 製表符 u0009 n 換行符 u000a r 回...
Java正規表示式
方便查詢的東西 基本語法 轉義字元 in d d d 數字0 9 多少到多少 d 非數字 0 9 非 w 單詞字元 a za z0 9 a3 w 非單詞字元 w s 空白 如 n t 0 1次 1 n次 0 n次 必須是n次 大於等於n次 n demo 中文 u0391 uffe5 英文 a za ...