1

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

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

2 回答 2

9

search只会返回第一个匹配项。

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

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

如果您想在一场比赛中找到两个大括号,请使用:

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

+与 1 个或多个对象的匹配项。

于 2013-04-09T00:01:53.413 回答
5

您的正则表达式并不贪婪。事实上,它被设置为只匹配一个字符。如果您希望它也匹配重复,请添加+

>>> r=re.compile('\)+')
>>> var=r.search('- hi- ))there')
>>> print var.group()
))
于 2013-04-08T23:58:57.740 回答