re.findall和迭代re.search之间的_qualitative_差异是什么?

时间:2017-11-07 05:49:05

标签: python regex

当想要查找并处理字符串中所有出现的正则表达式时,re.findall之间的定性区别是什么,并且迭代它返回的列表而不是直接用{{1}迭代}}?

在代码中,re.search版本之间的质量差异是什么:

findall

迭代sbls = "some big ... long string" for i in some_regex.findall( sbls ) process_item( i ) 版本:

search

非常大字符串和选择不当/低基数的正则表达式中,sbls = "some big ... long string" m = some_regex.search( sbls ) while m: process_item( m.group() ) m = some_regex.search(sbls, m.end()) 版本会消耗更多内存(可能通过列表)吗?相反,findall版本会花费更多时间吗?

由于我可以访问的硬件的限制,我无法辨别出一个不可忽视的差异,所以非常感谢其他人'的见解。

1 个答案:

答案 0 :(得分:0)

就像@Jan所说,发现一切都稍微快一些,但是后者可以让你更好地控制每场比赛怎么做,例如,或许你可以提前找到你想要的东西,你可以打破并节省找到剩余比赛的努力。