使用正则表达式从大文件中提取数据
本文关键字:提取 数据 文件 正则表达式 | 更新日期: 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
您需要将第二个捕获组用于二进制内容,第一个组将与标头匹配,表达式需要它才能知道在哪里停止。
*以斜体编辑