返回 Bug 清单
BUG-0335project-47中已修复backend-logic

正则分支逃逸 —— 交替符 | 优先级低于预期,关键词分支独立匹配整串

发现:2026-10-01验证:2026-10-09置信度:95%

症状

交互关键词匹配行为错乱:本应『完整短语+数字』才命中的规则,仅靠关键词分支就匹配了整个字符串。

根因

| 的优先级是最低的,a|b|c\d 是三个独立分支的并集,而不是『(a 或 b 或 c) 后跟数字』。多分支组合必须显式分组。

修复方案

组合分支一律用非捕获组 (?:...) 包裹后再接公共后缀:(?:a|b|c)\d。代码评审对含 | 且含锚点/量词的正则强制检查分组边界。

检测命令

grep -rnE '\|[^?)]' --include='*.java' | grep -E 'Pattern|matches'  # 人工复核分组

错误签名

A|B|C\d 形态的正则中,前两个分支脱离整体锚点独立生效

技术信息

来源项目

project-47

标签

regex, precedence, non-capturing-group