1

我不确定为什么这个正则表达式不会在 python 2.7(re.compile)中编译。re.debug 标志甚至不会告诉我原因。

\b(?<case>(review|case|bug[zs]?(\s| )*(id)?:?)s?(\s| )*([#:; ]| )+)((([ ,:;#]|and)*)(?<bugid>\d+))+
4

1 回答 1

5

因为在 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同样,([#:; ]| )可以安全地替换为([#:; ]).

于 2012-04-27T04:48:10.003 回答