【发布时间】:2017-01-17 19:34:02
【问题描述】:
我正在大量文件中搜索大量字符串,但有些文件太大而无法放入内存。我尝试加载 10kB 左右的块并且它起作用了,但是如果我正在寻找的字符串已经被分割了 - 它的一半在这个块中,另一半在另一个?我的模式永远不会匹配。有没有办法解决这个问题?
【问题讨论】:
-
每次多加载一个chunk,这样你在chunk N和N+1中搜索,然后是N+1和N+2ː)
-
问题标记为 C++,但也许你可以使用像 grep 这样的命令行工具?
-
@Geoffroy 如此简单有效 - 谢谢!如果可以,请写下您的评论作为答案,以便我批准。
-
如果你加载块 N 和 N + 1,但你的匹配跨越块 N, N + 1 和 N + 2,你不会找到它。您只是降低了代码中断的可能性。不过它还是坏了。
-
只有在您可以提前确定所有匹配项的上限时才有可能。通常情况并非如此。如果您的正则表达式中有
*,则匹配可以是任意长度。