正则表达式调试中最常见的感受就是“明明写了却匹配不到”。多数情况下,问题出在下面几个地方。

  • 忘记转义:想匹配字面量的 .*( 等元字符时,必须写成 \.\*\(
  • 量词贪心:默认贪婪导致多吞字符,需要时在量词后加 ? 转为非贪婪。
  • 锚点位置错:^ 匹配行首、$ 匹配行尾,想匹配中间内容时别乱用锚点。
  • 分组编号混乱:反向引用按左括号出现的顺序编号,新增一组括号后 \1 的含义会改变。
  • 语言差异:不同语言的正则引擎语法略有差别,例如环视、独占模式并非所有环境都支持。

在测试器里把表达式逐段拆开验证,很快就能定位问题。