我运行了以下代码,只得到第一个')'作为匹配。有人可以帮我解释为什么常规的贪婪'))'没有被退回吗?
r=re.compile('\)')
var=r.search('- hi- ))there')
print var.group()
答案 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()
))