在整个文件中进行多行正则表达式搜索

Nil*_*ils 8 .net c# regex large-files

我已经找到大量示例来使用正则表达式替换文件中的文本.然而,它归结为两个版本:
1.迭代文件中的所有行并将regex应用于每一行
2.加载整个文件.

第2号使用"我的"文件是不可行的 - 它们大约是2GiB ......
至于第1号:目前这是我的方法,但是我想知道......如果需要应用跨越多个的正则表达式怎么办?线?

Nil*_*ils 2

答案是:
没有简单的方法

我找到了一个StreamRegex-Class,它可以完成我正在寻找的任务。
据我所知,该算法:

  • 从文件开头开始,缓冲区为空
  • 做 (
    • 将文件的一大块添加到缓冲区
    • 如果缓冲区中有匹配项
      • 标记匹配
      • 从缓冲区中删除比赛结束前出现的所有数据
  • )虽然文件中还剩下一些内容

这样就不需要加载完整文件——或者至少减少了在内存中加载完整文件的机会...
但是:最坏的情况是整个文件中没有匹配项——在这种情况下是完整文件文件将被加载到内存中。