Python的.group()只返回第一个匹配

时间:2013-04-08 23:56:26

标签: python regex

我运行了以下代码,只得到第一个')'作为匹配。有人可以帮我解释为什么常规的贪婪'))'没有被退回吗?

r=re.compile('\)')
var=r.search('- hi- ))there')
print var.group()

2 个答案:

答案 0 :(得分:9)

search只会返回第一场比赛。

要查找所有匹配项,请使用findall

r=re.compile('\)')
var= r.findall('- hi- )) there')
print (var)

如果你想在一场比赛中找到两个大括号:

r=re.compile('\)+')

+与一个或多个对象匹配。

答案 1 :(得分:5)

你的正则表达并不贪心。实际上,它的设置只匹配一个字符。如果您希望它与重复匹配,请添加+

>>> r=re.compile('\)+')
>>> var=r.search('- hi- ))there')
>>> print var.group()
))