正規表示式中的反向引用

2022-06-14 20:48:12 字數 1333 閱讀 9592

1.反向引用需要使用到分組,分組就是使用()括起來的部分為乙個整體,在進行分組匹配時的原則是:由外向內,由左向右

2.反向引用如:\1,\2等

\1:表示的是引用第一次匹配到的()括起來的部分

\2:表示的是引用第二次匹配到的()括起來的部分

(1)例:

string regex = "^(\\d)\\1$";

首先這裡是匹配兩位,\d一位,\1又引用\d一位 這裡的\1會去引用(\d)匹配到的內容,因為(\d)是第一次匹配到的內容。

如:str = "22"時,(\\d)匹配到2,所以\1引用(\\d)的值也為2,所以str="22"能匹配

str = "23"時,(\\d)匹配到2,因為\1引用(\\d)的值2,而這裡是3,所以str="23"不能匹配

(2)例:

string regex = "^(\\d)\\1[0-9](\d)\1";

注意在後面第二個(\d)\1中的\1,這裡的\1並不會去匹配他前面的(\d),而是匹配第乙個(\\d),

如:第乙個(\d)為3時,則第乙個\1也為3,同樣最後那個\1也為3,所以結果可以是335933,332533

而不是336444,339888

(3)例:

string regex = " ^(\d)\1[0-9](\d)\2$";

這裡使用了\2引用第二次匹配到的分組,這裡第二次匹配的分組為\2前面的(\d), 這裡的指的是\2的值出現兩次

如:第乙個(\d)為4時,\1引用第1個(\d)也為4,第二個(\d)為5時,\2引用第二個(\d)為5,所以結果可以是:447555,440222

(4)例:

string regex = " ^((\d)3)\1[0-9](\d)\2$";

當匹配中的分組有巢狀時,是從外向裡匹配的,其次在由左向右匹配

這裡主要是分析匹配到分組的順序,首先匹配((\d)3)這整個部分,其次匹配((\d)3)裡面的(\d),第三次匹配時最後乙個\2前面的(\d)

如:如((\d)3)中的(\d)為2時,((\d)3)的值為23,此時\1為((\d)3)的值1,而\2引用((\d)3)中的(\d)的值3,第三個(\d)為5時,此時\3引用第三個(\d)的值5,所以結果可以有:23238522,23230522,

正規表示式反向引用

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

正規表示式中的反向引用

反向引用 nnn 對指定分組已捕獲的字串進行引用,對當前匹配的字串,引用指定分組捕獲到的字串,主要用於文字的替換。說明deelx 支援的反向引用格式 反向引用 說明 nnn 對指定編號的分組進行反向引用 g對指定名字的命名分組進行反向引用 k k name 另外,如果被引用的捕獲組 括號對 未進行捕...

正規表示式中的反向引用

反向引用 nnn 對指定分組已捕獲的字串進行引用,對當前匹配的字串,引用指定分組捕獲到的字串,主要用於文字的替換。說明deelx 支援的反向引用格式 反向引用 說明 nnn 對指定編號的分組進行反向引用 g對指定名字的命名分組進行反向引用 k k name 另外,如果被引用的捕獲組 括號對 未進行捕...