python 正则表达式 : re. findall() 的行为不按预期进行交替

标签 python regex

我有以下代码:

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)以避免这种情况。请参阅What is a non-capturing group?

关于python 正则表达式 : re. findall() 的行为不按预期进行交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241171/

相关文章:

python - Cython:将单个元素分配给多维内存 View 切片

java - 如何分别读取字符和整数

c# - 用于解析 JSON 对象数组的正则表达式?

java - 字符串替换所有多个字符

python - 敌人不会显示

python - Pandas :如何将函数应用于列名

python - 在 Keras 中为多标签文本分类神经网络创建一个带有 Attention 的 LSTM 层

regex - Powershell 正则表达式匹配序列不起作用,尽管它在 Sublime Text 中匹配查找和替换

python - 通过 scipy 给出相似矩阵的树状图