You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式拆分含多段%%EOF的复合PDF文件

原正则错误原因
  • 贪婪匹配逻辑优先级问题:你编写的REGEX_PDF = b'%PDF\-.+(?!%PDF\-).+%%EOF'中,.+为贪婪匹配模式,会优先吞噬尽可能多的字符直到字符串末尾,再执行后面的负向先行断言(?!%PDF\-),此时字符串末尾不存在%PDF-标记,断言必然成立,最终只会匹配到整个文件最后一个%%EOF,无法拆分出多个独立PDF。
  • 断言位置逻辑错误:负向先行断言需要在每一步匹配前校验是否出现下一个PDF的起始标记,而不是在吞噬完所有内容后再校验,原有写法的断言完全没有起到区间截断的作用。
正确适配方案

使用回火贪婪令牌限制匹配区间,保证匹配范围不会越过下一个%PDF-起始标记,同时自动匹配区间内最后一个%%EOF结束标记,代码如下:

REGEX_PDF = b'%PDF\-(?:(?!%PDF\-).)*%%EOF'
pdfDocuments = re.findall(REGEX_PDF, fileContent, re.DOTALL)

正则逻辑说明

  • %PDF\-:匹配单个PDF的起始标记
  • (?:(?!%PDF\-).)*:非捕获组,每匹配一个字符前都会校验下一个位置是否为%PDF-起始标记,若出现则立刻停止匹配,严格将匹配范围限制在当前PDF的起始标记到下一个PDF的起始标记之间
  • %%EOF:匹配PDF结束标记,因为匹配区间已被限制,贪婪模式会自动取区间内最后一个%%EOF,完美适配带扩展的多EOF PDF结构。

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:54:03