You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则使用负向回顾排除Revert前缀匹配git提交信息问题

正则规则修改方案

问题根因

  • 你之前尝试的(?<!Revert).*?\[\s*(ID\d{3})\s*\](.*)存在匹配漏洞:负向后顾仅校验当前位置的前缀是否为Revert,但后续的非贪婪匹配.*?可以跳过Revert字符段,从后续位置开始匹配ID规则,导致带Revert的提交依然会命中add_pattern。
  • 原有revert_pattern未加行首锚点,可能会匹配到中间带Revert关键词的非回滚提交,不够严谨。

修正后的正则配置

input_regexes = {
    "add_pattern": r"^(?!.*[Rr]evert).*\[\s*(ID\d{3})\s*\](.*)",
    "revert_pattern": r"^[Rr]evert.*\[\s*(ID\d{3})\s*\](.*)"
}

规则说明

  • add_pattern开头添加了负向前瞻(?!.*[Rr]evert):会从行首开始校验整个字符串中是否包含Revert或者revert关键词,只要存在就直接匹配失败,完全排除回滚提交命中新增规则的可能。
  • revert_pattern添加了行首锚点^:确保只有Revert/revert出现在提交信息开头的回滚提交才会命中,符合你要求的[Rr]evert前缀规则。

匹配验证

对测试用例的匹配结果完全符合预期:

  • revert_pattern仅匹配Revert "[ID123] some cool feature.",第一个捕获组提取到ID123,第二个捕获组提取到功能描述
  • add_pattern仅匹配两条新增提交信息,可正常提取ID和功能描述

内容的提问来源于stack exchange,提问作者marek_maras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:45:01