繁体   English   中英

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

[英]Finding first N occurrences of regex in Python

因此,这应该很容易,但是我却以某种方式错过了SO或Python文档的答案。 我正在使用此代码:

myregex.findall(source)

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

myregex.findall(source, n)

使用re.finditer

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

re.finditer是一种生成器,可根据需要生成match对象。 您可以从m.group(0)获得完全匹配,或者从m.group(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM