正则表达式调试中最常见的感受就是“明明写了却匹配不到”。多数情况下,问题出在下面几个地方。
- 忘记转义:想匹配字面量的
.、*、(等元字符时,必须写成\.、\*、\(。 - 量词贪心:默认贪婪导致多吞字符,需要时在量词后加
?转为非贪婪。 - 锚点位置错:
^匹配行首、$匹配行尾,想匹配中间内容时别乱用锚点。 - 分组编号混乱:反向引用按左括号出现的顺序编号,新增一组括号后
\1的含义会改变。 - 语言差异:不同语言的正则引擎语法略有差别,例如环视、独占模式并非所有环境都支持。
在测试器里把表达式逐段拆开验证,很快就能定位问题。