python中正则表达式匹配的内存限制是什么? (在大文件中寻找重复)

时间:2016-04-07 23:57:33

标签: python regex memory

我在二进制文件中搜索重复数据(任意长度)(恰好是录音,用wave模块读取)

这是我正在使用的表达式:

r = re.compile(r"((..){4,})\1")

...因为音频样本各占2个字节,结果应至少为8个字节。

然后删除重复的区域:

for match in r.finditer(buffer):
    buffer = buffer.replace( match.group(0), match.group(1) )

我意识到我问了很多 - 重复的数据可以在文件中的任何位置,也可以是任意长度。实际上,该算法仅在重复区域较小(<800字节)时起作用,并且如果重复数据更接近数据流的开始则算法更成功。否则,它只返回0结果。

有没有办法扩展正则表达式匹配的可用资源?或者预测可能将问题大小减少到更易于管理的部分所需的用法?

0 个答案:

没有答案