使用正则表达式从大文件中提取数据

本文关键字:提取 数据 文件 正则表达式 | 更新日期: 2023-09-27 18:18:46

我有一个接近 800 MB 的文件,它由几个(标题后跟内容(组成。标头看起来像这样 M=013;X=rast;645.jpg 而内容是 jpg 文件的二进制文件。

所以文件看起来像这样

M=013;X=rast;645.jpgNULœDüŠˆ.....M=217;X=rast;113.jpgNULÿñÿÿ&åbÿås....M=217;X=rast;1108.jpgNUL]_ÿ×ÉcË/...

标头可以出现在一行或两行中。

我需要解析这个文件,基本上弹出几个jpg图像。

由于这是一个太大的文件,请提出一个有效的方法?我希望使用StreamReader,但没有太多的正则表达式经验。

使用正则表达式从大文件中提取数据

RegEx:
/(M=.+?;X=.+?;.+?'.jpg)(.+?(?=(?1)|$))/gs *带递归(在 .NET 中不受支持(

.NET 正则表达式解决方法:

/(M=.+?;X=.+?;.+?'.jpg)(.+?(?=M=.+?;X=.+?;.+?'.jpg|$))/gs(?1)递归组替换为第一个捕获组中的内容

现场演示和正则表达式解释:http://regex101.com/r/nQ3pE0/1

您需要将第二个捕获组用于二进制内容,第一个组将与标头匹配,表达式需要它才能知道在哪里停止。

*以斜体编辑