我需要有效地对抗Python Regex匹配。 Findall和finditer可以工作,但是对于大量搜索而言速度较慢。

到目前为止,我有这个(非常简化的版本):

import re
testItem = re.compile(r"var")
for matches in testItem.finditer(stringData):
    counter = counter + 1
return counter


我正在运行此方法的多个实例。我自己不在乎比赛。我只想退货。

问题是stringData是一个很大的字符串。正则表达式本身非常简单。

请提供更有效的方法来建议这样做。

提前致谢。

最佳答案

由于您在修改中表明您只是在寻找子字符串,

stringData.count('var')


应该为您服务。

当然,这不能推广到RE的许多其他用途!不幸的是,至少从Python 3.4开始,re.finditer返回的迭代器不支持PEP 424形式化的“长度提示”,因此(对于一般情况)没有很多好的选择

sum(1 for _ in there.finditer(stringData))

10-05 19:42