2

我需要有效地对抗 Python 正则表达式匹配。Findall 和 finditer 可以工作,但是对于大量搜索来说速度很慢。

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

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

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

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

请建议一种更有效的方法来做到这一点。

提前致谢。

4

1 回答 1

1

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

stringData.count('var')

应该很好地为您服务。

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

sum(1 for _ in there.finditer(stringData))
于 2015-02-16T18:11:53.407 回答