Python re.findall() 无法捕获所有子组

问题描述 投票:0回答:1
  • 代码:
import re
regex = re.compile('[a-zA-Z_]\w* +([a-zA-Z_]\w*)( *, *[a-zA-Z_]\w*)*;')
src = ' A a, b, c;'
result = regex.findall(src)
print(result)
  • 输出:
[('a', ', c')]
  • 为什么
    , b
    没有被捕获?
python regex regex-group python-regex
1个回答
0
投票

如果您的捕获组按模式重复(您在第二个捕获组上使用了 * 量词),则仅存储与其匹配的最后一个值。 因此 'b' 被正确捕获,但随后被 c 替换。

要捕获所有组,您应该创建一个循环并使用带有“global”标志的正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.