我的问题是,这个带有布尔运算符的简单正则表达式语句只有在按位运算符 | 左侧的第一项出现在句子中时才给我想要的结果。有人可以告诉我为什么它不适用于替代方案吗?
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)
访问的第二个捕获组。
您可以编写一个将捕获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)
演示的输出:
day
to die hard