【发布时间】:2011-12-27 22:41:49
【问题描述】:
我需要在字符串中为给定的正则表达式找到所有匹配项。我一直在使用findall() 来做到这一点,直到我遇到一个没有达到我预期的情况。例如:
regex = re.compile('(\d+,?)+')
s = 'There are 9,000,000 bicycles in Beijing.'
print re.search(regex, s).group(0)
> 9,000,000
print re.findall(regex, s)
> ['000']
在这种情况下,search() 返回我需要的内容(最长匹配),但 findall() 的行为不同,尽管文档暗示它应该是相同的:
findall()匹配所有出现的模式,而不仅仅是第一个 正如search()所做的那样。
为什么行为不同?
如何使用
findall()(或其他)实现search()的结果?
【问题讨论】:
标签: python regex search string-matching findall