我需要有效地对抗Python Regex匹配。 Findall和finditer有效,但大次搜索的速度很慢。
到目前为止,我有这个(更简化的版本):
import re
testItem = re.compile(r"var")
for matches in testItem.finditer(stringData):
counter = counter + 1
return counter
我正在运行此方法的多个实例。我不关心比赛本身;我只想回到柜台。
问题是stringData是一个非常大的字符串。正则表达式本身很简单。
请告知更有效的方法。
提前致谢。
答案 0 :(得分:1)
由于您在编辑中显示您只是在寻找子字符串,
stringData.count('var')
应该为你服务。
当然,这并不能概括到RE的许多其他用途!不幸的是,至少从Python 3.4开始,re.finditer
返回一个不支持PEP 424形式化的“长度提示”的迭代器,因此没有很多好的替代方案(对于一般情况)< / p>
sum(1 for _ in there.finditer(stringData))