← 云枢 AI 导航 · 工具库

正则测试:先说清 RE2 不支持什么

从 Stack Overflow 抄来的表达式,在 Go / Java 里跑不通,多半是因为它用了 RE2 不支持的语法。这个工具会直接指出来。

立即使用 → English

正则引擎分两派:PCRE(PHP、Python、JS 的部分实现)支持前后查找 (?=)、反向引用 \1;RE2(Go、Rust regex、RE2 库)都不支持,换来的是线性时间、不会灾难性回溯。

很多人把 PCRE 的表达式粘到 Go 项目里,得到一个含糊的 "invalid or unsupported Perl syntax" 就走了。这里会把这句话翻译成"RE2 不支持前后查找",并告诉你能用什么替代。

它会检查什么

常见问题

为什么 (?=...) 报错?
因为 Go 用的 RE2 引擎不支持前后查找。替代方案通常是改写表达式,或者改用能拿到上下文的两次匹配。
会不会被 (a+)+ 这种表达式卡死?
不会。RE2 的匹配时间是输入长度的线性函数,没有回溯,所以不存在灾难性回溯(ReDoS)。
命名分组怎么写?
用 (?P<name>...),不是 PCRE 的 (?<name>...)。

相关工具