2014-04-16 24 views
2

I can\'?t (.*)Python的正則表達式零次或多次發生

我的正則表達式是上述形式。但是,如果給它的字符串如果str =「我不能」,這是行不通的後t

re.compile(r'I can\'?t (.*)').match(str)

結束我的匹配對象不匹配。但是如果str =「我不能使用」,它就會工作(匹配返回一些東西)。

回答

2

您的t後留下的強制性空間。刪除它,你會被罰款:

I can\'?t(.*) 

還要注意的是,如果你想使用第一個捕獲組的內容,如果不是你可以安全地刪除它們括號內是唯一有用的。

+0

這是問題所在。 – laike9m

+0

@ laike9m:很高興能幫到你。如果一個答案完全解決了您的問題,請記住將其標記爲已接受以解決問題,並且您很好。 – Robin

+0

haha​​haha我不是OP – laike9m

0

對於您可以這樣做:

re.compile(r'I can\'?t.*').match(str)

這將匹配"I can't"與其他一些文字下面,或只是"I can't"

+0

這裏的變化是無關緊要的:'。*'將永遠匹配,即使它是一個空字符串。通過把它作爲第一選擇,你確保'''永遠不會被使用。 – Robin

+0

@Robin,謝謝。我已經更新了我的答案。 – sshashank124