计算Python正则表达式有效匹配

时间:2015-02-16 17:41:41

标签: python regex performance re2

我需要有效地对抗Python Regex匹配。 Findall和finditer有效,但次搜索的速度很慢。

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

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

我正在运行此方法的多个实例。我不关心比赛本身;我只想回到柜台。

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

请告知更有效的方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于您在编辑中显示您只是在寻找子字符串,

stringData.count('var')

应该为你服务。

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

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