2012-04-27 38 views
1

我不確定爲什麼這個正則表達式不能在Python 2.7(re.compile)中編譯。 re.debug標誌甚至不會告訴我爲什麼。將C#正則表達式轉換爲python

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

回答

5

因爲在Python,命名捕獲與(?P<name>),不(?<name>)完成。嘗試:

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

同時務必使用原始字符串,例如(與C#的@"regex"語法進行比較)。

請注意,(\s|)是多餘的,如果捕獲不重要,可以用(\s)或簡單地\s替換。同樣,([#:; ]|)可以安全地替換爲([#:; ])

相關問題