使用re.findall查找前x个匹配项

时间:2014-04-20 17:14:55

标签: python regex

我需要限制re.findall找到前3个匹配然后停止。

例如

text = 'some1 text2 bla3 regex4 python5'
re.findall(r'\d',text)

然后我得到:

['1', '2', '3', '4', '5']

我希望:

['1', '2', '3']

2 个答案:

答案 0 :(得分:8)

re.findall会返回一个列表,因此最简单的解决方案就是使用slicing

>>> import re
>>> text = 'some1 text2 bla3 regex4 python5'
>>> re.findall(r'\d', text)[:3]  # Get the first 3 items
['1', '2', '3']
>>>

答案 1 :(得分:8)

要查找N个匹配并停止,您可以使用re.finditeritertools.islice

>>> import itertools as IT
>>> [item.group() for item in IT.islice(re.finditer(r'\d', text), 3)]
['1', '2', '3']