在Python中查找前N次正则表达式

时间:2013-04-03 10:10:36

标签: python regex

所以这应该很容易,但我在某种程度上错过了关于SO或Python文档的答案。 我正在使用此代码:

myregex.findall(source)

这会将myregex的所有匹配项生成为一个列表。 现在,问题是源很长,我只需要前6次出现匹配myregex的子串。我想如果匹配过程在找到前n次发生后停止会更快。 我该怎么做:

myregex.findall(source, n)

2 个答案:

答案 0 :(得分:6)

使用re.finditer

import itertools
for m in itertools.islice(re.finditer(pat, text), 6):
    ...

re.finditer是一个按需生成match个对象的生成器。您可以从m.group(0)获得完整匹配,也可以从m.group(1)开始获得完整匹配。

答案 1 :(得分:1)

由于您需要效果,请使用regex.finditer

def my_find(regex, s, n):
    const = regex.finditer(s)
    return [const.next().groups() for i in range(n)]

或更安全的版本:

def my_find(regex, s, n):
    const = regex.finditer(s)
    ret_val = []
    for i in range(n):
        try:
            ret_val.append(const.next().groups())
        except StopIteration:
            return ret_val
    return ret_val