首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分文档的Regex

拆分文档的Regex
EN

Stack Overflow用户
提问于 2021-09-07 06:59:10
回答 1查看 166关注 0票数 2

我想将个人PDF文档从一个文件中分离出来。到目前为止,它通过使用以下代码来处理结构化的文件:%PDF- .... %%EOF ... %PDF- .... %%EOF

代码语言:javascript
复制
REGEX_PDF = b'%PDF\-.+?%%EOF'
pdfDocuments = re.findall( REGEX_PDF, fileContent, re.DOTALL )

现在,我需要改变软件,使之也能与扩展的PDF一起工作。这导致了这样的文件结构:%PDF- .... %%EOF ... %%EOF ... %%EOF ... %PDF- .... %%EOF。因此,我需要匹配从PDF标签的子字符串,直到最后%%EOF标签之前的下一个PDF标签。我最好的猜测是:

代码语言:javascript
复制
REGEX_PDF = b'%PDF\-.+(?!%PDF\-).+%%EOF'

但这似乎行不通。相反,只有一个子字符串匹配从第1 %PDF标签顶部,最后%%EOF标签。有人知道错误在哪里吗?

谢谢你,托马斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 07:06:49

您可以在这里依赖“开始分隔符”,并使用

代码语言:javascript
复制
re.split(rb'(?!\A)(?=%PDF-)', fileContent)
re.findall(rb'%PDF-.*?(?=%PDF-|\Z)', fileContent, re.S)
re.findall(rb'%PDF-[^%]*(?:%(?!PDF-)[^%]*)*', fileContent)

regex #1演示regex #2演示regex #3演示

(?!\A)(?=%PDF-)正则表达式匹配一个非起始位置的位置,该位置紧跟在%PDF-之后。

%PDF-.*?(?=%PDF-|\Z)模式匹配%PDF-,然后任何零或多个字符尽可能少,直到最左边出现%PDF-或字符串末尾。%PDF-[^%]*(?:%(?!PDF-)[^%]*)*几乎是一样的,但是它不检查右侧是否有%PDF- (在这里,(?=%PDF-|\Z)前瞻性检查被内置到.*?模式中(“已往”))。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69083676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档