我在这里看到问题: Regex to capture {} 这与我想要的类似,但我无法让它工作。
我的数据是:
[Honda] Japanese manufacturer [VTEC] Name of electronic lift control
我希望输出是
[Honda], [VTEC]
我的表达是:
m = re.match('(\[[^\[\]]*\])', '[Honda] Japanese manufacturer [VTEC] Name of electronic lift control')
我希望:
m.group(0)
输出[Honda]
m.group(1)
输出[VTEC]
但是两者都输出[Honda]
。如何访问第二场比赛?
最佳答案
你的表达式中只有一个组,所以你只能得到那个组。第 1 组是捕获组,第 0 组是整个匹配文本;在你的表达中,它们是一回事。如果您省略了 (...)
括号,您将只有一个组 0。
如果你想获得所有匹配,使用re.findall()
.这将返回匹配组列表(或组 0,如果表达式中没有捕获组):
>>> import re
>>> re.findall('\[[^\[\]]*\]', '[Honda] Japanese manufacturer [VTEC] Name of electronic lift control')
['[Honda]', '[VTEC]']
关于python - 使用正则表达式捕获方括号内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330609/