[正則表達式]PCRE反向分組引用(語法)
阿新 • • 發佈:2019-02-27
一個 正則 () 規則 引用 aaa 沒有 ron 運用 ;
正則表達式中,凡出現圓括號(),括號中的匹配內容就會被認為是一個分組;
根據括號從左邊出現的順序命名分組代號,分組代號由1到n(代號0通常被一些語言用來引用整個表達式匹配的結果,即使這個表達式沒有分組括號,但是表達式內不能引用\0),例如:
(a(b))
以上表達式包含兩個分組第1個是(a(b)),第2個是(b),很明顯第一個分組包含了第二個分組的內容;
反向引入分組,其實是後面引用分組中匹配的結果,引用分組的語法是\+分組代號:
(.)\1
這個表達式的含義是匹配一個任意字符,接下來再出現一個這樣的字符,註意,引用分組,是引用分組匹配的結果,而不是引用分組的表達式規則
分組可以用量詞控制匹配次數,在量詞的前面,分組引用依然有效,只不過引用的是多次匹配量詞的最後一次匹配的一個結果:
\b([^&])+&\1
如果運用以上表達式來匹配"aaa&aaa",那麽結果將會是"aaa&a",其中分組捕獲的結果是"a";
有兩點需要註意一下:
1. 盡管分組後面接量詞+號,但是分組引用的也只是分組匹配一次的結果"a"而不是多次的結果"aaa";
2. 分組引用的是最後一次匹配的結果,也就是&號前面的"a";
[正則表達式]PCRE反向分組引用(語法)