由于对组进行了“编号”,因此某些引擎还支持匹配先前已再次匹配的组。
假设您想匹配长度等于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
这将匹配相邻行中具有相同时间戳和相同条目的两个日志记录条目。