簡體   English   中英

Python正則表達式布爾語句不起作用

[英]python regex boolean statement not working

我的問題是,這個簡單的帶有布爾運算符的regex語句僅在按位運算符左側的第一個項目| |時給我想要的結果。 出現在句子中。 有人可以告訴我為什么它也不能在替代方案上工作嗎?

 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(1)將被設置為None,而group(2)將包含第二個分支所匹配的分支。


有幾種方法可以解決此問題。 例如,要寫成只有一組

jeff = re.search('good (?:day|night) (.+)hard', b)

第二個(...)創建您需要使用.group(2)訪問的第二個捕獲組。

您可以編寫一個正則表達式來捕獲daynight ,而第二組將獲取所有內容,直到最后一個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)

演示的輸出:

day
to die hard

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM