使用regex从大文件中提取数据

时间:2014-08-18 22:03:27

标签: c# regex

我有一个接近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,但没有太多使用正则表达式的经验。

1 个答案:

答案 0 :(得分:1)

正则表达式:
带递归的/(M=.+?;X=.+?;.+?\.jpg)(.+?(?=(?1)|$))/gs *(.NET不支持)

.NET RegEx解决方法:
/(M=.+?;X=.+?;.+?\.jpg)(.+?(?=M=.+?;X=.+?;.+?\.jpg|$))/gs
(?1)递归组替换为第一个捕获组内的内容

现场演示和RegExp说明:http://regex101.com/r/nQ3pE0/1

您需要将第二个捕获组用于二进制内容,第一个组将匹配标头,表达式需要它来知道停止的位置。

*以斜体编辑