从 Stack Overflow 抄来的表达式,在 Go / Java 里跑不通,多半是因为它用了 RE2 不支持的语法。这个工具会直接指出来。
正则引擎分两派:PCRE(PHP、Python、JS 的部分实现)支持前后查找 (?=)、反向引用 \1;RE2(Go、Rust regex、RE2 库)都不支持,换来的是线性时间、不会灾难性回溯。
很多人把 PCRE 的表达式粘到 Go 项目里,得到一个含糊的 "invalid or unsupported Perl syntax" 就走了。这里会把这句话翻译成"RE2 不支持前后查找",并告诉你能用什么替代。
(?P<name>...),不是 PCRE 的 (?<name>...)。