Python regex:re.findall() 在交替时没有按预期运行



我有以下代码:

testREString = '(hello | goodbye) s darkness s my s old s friend'
testString = 'sound of silence: goodbye darkness my old friend'
exp = re.compile(testREString, re.VERBOSE)
print(exp.findall(testString))

它返回:['goodbye']我期望它返回完整句子的地方 - 事实上,使用exp.search(testString)它正确地选择了句子的其余部分。那么,为什么没有显示完整的匹配呢?

谢谢你的时间。

正则表达式中的(...)定义捕获组。

re.findall返回捕获组的内容(如果表达式定义了任何内容(。

您可以将其设置为非捕获组(?:hello|goodbye)以避免这种情况。请参阅什么是非捕获组?

Khelwood 解释了为什么 findall(( 会这样。如果您想在不更改正则表达式的情况下捕获整场比赛,请使用

exp.group(0)

相关内容

最新更新