我不确定为什么这个正则表达式不会在 python 2.7(re.compile)中编译。re.debug 标志甚至不会告诉我原因。
\b(?<case>(review|case|bug[zs]?(\s| )*(id)?:?)s?(\s| )*([#:; ]| )+)((([ ,:;#]|and)*)(?<bugid>\d+))+
因为在 Python 中,命名捕获是用 完成的(?P<name>)
,而不是(?<name>)
. 尝试:
\b(?P<case>(review|case|bug[zs]?(\s| )*(id)?:?)s?(\s| )*([#:; ]| )+)((([ ,:;#]|and)*)(?P<bugid>\d+))+
确保还使用原始字符串,例如r'regex'
(与 C# 的@"regex"
语法比较)。
请注意,这是多余的,如果捕获不重要(\s| )
,可以替换为(\s)
或简单地替换。\s
同样,([#:; ]| )
可以安全地替换为([#:; ])
.