[英]Python regex for finding everything inbetween two \n\n and \n\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.