反向引用和非捕獲組

由於組被編號,一些引擎還支援匹配組先前再次匹配的內容。

假設你想匹配兩個等於長度為 3 的字串除以 $ 的東西,你會使用:

(.{3})\$\1

這將匹配以下任何字串:

"abc$abc"
"a b$a b"
"af $af "
"   $   "

如果你希望組不被引擎編號,你可以將其宣告為非捕獲。非捕獲組看起來像這樣:

(?:)

它們對於重複某種模式特別有用,因為一組也可以用作原子。考慮:

(\d{4}(?:-\d{2}){2} \d{2}:\d{2}.\d{3}) (.*)[\r\n]+\1 \2

這將匹配具有相同時間戳和相同條目的相鄰行中的兩個日誌記錄條目。