python regex boolean语句不起作用

时间:2017-04-03 21:40:53

标签: python 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)

2 个答案:

答案 0 :(得分:1)

您有两组捕获括号 - 因此您有两个编号的捕获组。如果第二个分支匹配,则group(1)将设置为“无”,group(2)将包含与第二个分组匹配的分支。

有几种方法可以解决这个问题。一种是写,以便只有一个组,例如

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

答案 1 :(得分:0)

第二个(...)创建了您需要使用.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)

demo的输出:

day
to die hard