Python 正则表达式布尔语句不起作用



我的问题是,这个带有布尔运算符的简单正则表达式语句只有在按位运算符 | 左侧的第一项出现在句子中时才给我想要的结果。有人可以告诉我为什么它不适用于替代方案吗?

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)将设置为"无",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

最新更新