java正規表示式中自己對捕獲組的初步理解

2021-07-23 11:45:32 字數 1238 閱讀 1220

一、捕獲組的概念:

捕獲組是把多個字元當乙個單獨單元進行處理的方法,它通過對括號內的字元分組來建立。根據的自己的需求,用小括號(),將一段正規表示式劃分成不同的部分,預設次序一般是從左到右(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 ...