Regular Expressions 反向引用和非捕获组

示例

由于对组进行了“编号”,因此某些引擎还支持匹配先前已再次匹配的组。

假设您想匹配长度等于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

这将匹配相邻行中具有相同时间戳和相同条目的两个日志记录条目。