我正在使用python工具来检查git日志提交消息,以确定是否引入或恢复了具有给定ID的功能。我无法更改工具的代码。只能提供适当的正则表达式作为输入。输入如下所示:
input_regexes = {
"add_pattern": r".*\[\s*(ID\d{3})\s*\](.*)"
"revert_pattern": r"[Rr]evert.*\[\s*(ID\d{3})\s*\](.*)"
}
第一个捕获组用于获取特征ID,第二个用作特征描述。
问题是,当出现带有[Rr]evert
的字符串时,两种模式都匹配。我希望达到的目标是:
revert_pattern
模式仅匹配括号中包含ID且在[Rr]evert
前面的提交消息add_pattern
模式只匹配括号中包含ID且不包含前面的[Rr]evert
的提交消息在以下示例中revert_pattern
应仅匹配revert_feature_message
,而add_pattern
应仅匹配add_feature_messages
中可用的字符串:
revert_feature_message='Revert "[ID123] some cool feature."'
add_feature_messages=[
'[ID123] some cool feature.',
'some prefix [ID123] some cool feature'
]
我尝试使用:
(?<!Revert).*?\[\s*(ID\d{3})\s*\](.*)
就像add_pattern
但它没有锻炼。你能帮我纠正一下吗
还原模式
[Rr]evert.*\[\s*(ID\d{3})\s*\](.*)
已仅与revert_feature_message
匹配要仅匹配
add_feature_messages
中的字符串,可以断言该字符串不包含revert或revertRegex demo
或者更具体一点:
Regex demo
如果
Revert
位于字符串的开头,则可以省略前导的.*
相关问题 更多 >
编程相关推荐