java正則反向引用

2021-08-21 14:43:25 字數 876 閱讀 1974

backreference:反向引用.與捕獲組匹配的輸入字串結果儲存在記憶體中,以便以後通過反向引用進行呼叫。用\+數字,表示要引用的group(數字)。

普通捕獲組反向引用:\k,通常簡寫為\number

命名捕獲組反向引用:\k或者\k』name』

源表示式:1212

正規表示式:((\d)\d)\1

匹配結果:1212

解析:首先((\d)\d),匹配了12,那麼記憶體儲存鍵為1,值為12的索引。然後\1,拿出來進行匹配,即1212.同理如果源表示式是1234,由於34和原本的不一致,所以不匹配。

源表示式:1212

正規表示式:((\d)\d)\2

匹配結果:121

解析:首先((\d)\d),匹配了12,那麼記憶體儲存鍵為2,值為1的索引。然後\2,拿出來進行匹配,即121.

上面說的鍵值的索引只是我個人的猜測,具體儲存方式我並不太清楚,但是一定會有相關的儲存而且應該是同時存了可能引用的索引。我猜測應該是陣列的可能性大點。

帶著上面的想法我又驗證了一下

源表示式:121121

正規表示式:((\d)\d)\2\1

匹配結果:12112

解析:首先((\d)\d),匹配了12,那麼記憶體儲存鍵為1,值為12的索引,儲存鍵為2,值為1的索引。然後\2,拿出來進行匹配,即121.再拿出\1進行匹配,即12112

源表示式:121121

正規表示式:((\d)\d)\2\2

匹配結果:1211

解析:首先((\d)\d),匹配了12,那麼記憶體儲存鍵為1,值為12的索引,儲存鍵為2,值為1的索引。然後\2,拿出來進行匹配,即121.再拿出\2進行匹配,即1211

正則 捕獲組之反向引用

之前寫正則的時候,經常用到 之類的用法.一般在替換的時候會用 1 來引用括號裡面匹配到的內容 比如,1.1.1.1 aaaa 2.2.2.2 bbbb 3.3.2.3 ccca 我們想在這段這文字的數字後面重複加上乙個與最後乙個數字相同的數字,即替換後的文字應該為 1.1.1.11 aaaa 2.2...

正規表示式反向引用

微軟關於正規表示式的反向引用的官方文件 1 第1個 代表任意字元,後面的 代表 前面的任意字元有0個或多個 第2個 也代表任意字元,但它被括號括起來了,括號代表它 獲了,相當於被複製了,還沒被貼上 第3個 也代表任意字元,後面的 代表 前面的任意字元有0個或多個 第1個 代表轉譯符,這個符號不能直接...

正規表示式的反向引用

其實,小括號包含的表示式所匹配到的字串 不僅是在匹配結束後才可以使用,在匹配過程中也可以使用。表示式後邊的部分,可以引用前面 括號內的子匹配已經匹配到的字串 引用方法是 加上乙個數字。1 引用第1對括號內匹配到的字串,2 引用第2對括號內匹配到的字串 以此類推,如果一對括號內包含另一對括號,則外層的...