我需要有效地应对 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))
关于python - 有效计算 Python 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547239/