后向引用:在后面的表達式中,引用前面某個分組所匹配到的內(nèi)容
在解釋之前需要先了解一下分組編號,在正則表達式中,每個分組都會對應(yīng)一個編號,以分組的左括號為標(biāo)志第一個為1 ,第二個為2依次類推

d1eeaaaaa526f7113fd4dac916070f2.png
\b(\w+)\b\s+\1\b可以用來匹配重復(fù)的單詞,像go go, 或者kitty kitty。這個表達式首先是一個單詞,也就是單詞開始處和結(jié)束處之間的多于一個的字母或數(shù)字(\b(\w+)\b),這個單詞會被捕獲到編號為1的分組中,然后是1個或幾個空白符(\s+),最后是分組1中捕獲的內(nèi)容(也就是前面匹配的那個單詞)(\1)。
你也可以自己指定子表達式的組名。要指定一個子表達式的組名,請使用這樣的語法:(?<Word>\w+)(或者把尖括號換成'也行:(?'Word'\w+)),這樣就把\w+的組名指定為Word了。要反向引用這個分組捕獲的內(nèi)容,你可以使用\k<Word>,所以上一個例子也可以寫成這樣:\b(?<Word>\w+)\b\s+\k<Word>\b。
我的理解是對于分配組號的分組,匹配到數(shù)據(jù)后會將匹配到的內(nèi)容和組號暫存起來,比如在例子中,(\w+) 的分組編號為1,當(dāng)帶匹配的字符串為go go 的時候會首先匹配到go 這個單詞,此時會將這個單詞和組號關(guān)聯(lián)暫存,當(dāng)后面用\1時會先去查找和組號1關(guān)聯(lián)的已匹配到的單詞go 然后代入正則表達式進行匹配