我有一个接近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,但没有太多使用正则表达式的经验。
答案 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
您需要将第二个捕获组用于二进制内容,第一个组将匹配标头,表达式需要它来知道停止的位置。
*以斜体编辑