我需要有效地对抗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))