我的問題是,這個簡單的正則表達式語句與布爾運算符只給了我想要的結果,當位運算符左側的第一項|出現在句子中。有人能告訴我爲什麼它不能在替代方案上工作嗎?蟒蛇正則表達式布爾語句不工作
import re
b = 'this is a good day to die hard'
jeff = re.search('good night (.+)hard|good day (.+)hard', b)
print jeff.group(1)
我的問題是,這個簡單的正則表達式語句與布爾運算符只給了我想要的結果,當位運算符左側的第一項|出現在句子中。有人能告訴我爲什麼它不能在替代方案上工作嗎?蟒蛇正則表達式布爾語句不工作
import re
b = 'this is a good day to die hard'
jeff = re.search('good night (.+)hard|good day (.+)hard', b)
print jeff.group(1)
第二(...)
創建你需要.group(2)
訪問第二個捕獲組。
你可以編寫一個正則表達式來捕獲day
或night
,而第二組將獲取所有到最後hard
。
import re
b = 'this is a good day to die hard'
jeff = re.search('good (day|night) (.+)', b)
if jeff:
print jeff.group(1)
print jeff.group(2)
的demo的輸出:
day
to die hard
你有兩套捕獲括號的 - 因此,你有兩個編號的捕獲組。如果第二個分支匹配,group(1)
將被設置爲None,並且group(2)
將包含與第二個分組相匹配的分支。
有幾種方法可以解決這個問題。一個會寫,以便只有一個組,例如
jeff = re.search('good (?:day|night) (.+)hard', b)
因爲第二個'(...)'創建第二個組。 –
'|'的正確名稱在正則表達式中是「交替」。這不是真的布爾。 – kindall