如何用正则匹配PDF中<<>>内包含/ObjStm的obj前置编号
PDF Obj编号匹配正则解决方案
需求说明
匹配PDF内容中obj关键字前的编号,要求该obj后跟随的<<>>字典内包含/ObjStm标识。
最终正则表达式
(\d+ \d+)(?=\s*obj\s*<<[\s\S]*?\/ObjStm[\s\S]*?>>)
正则解释
- 捕获组
(\d+ \d+):匹配obj前的两段数字组成的编号格式,如363 0 - 正向肯定预查
(?=...):确保编号后满足匹配规则,且不会把预查内容纳入匹配结果\s*obj\s*:匹配obj关键字及前后任意空白字符(含换行)<<:匹配字典起始标识[\s\S]*?:非贪婪匹配任意字符(含换行,适配跨多行的字典内容)\/ObjStm:匹配要求存在的目标标识[\s\S]*?>>:非贪婪匹配到字典结束标识>>
匹配效果
针对提供的示例内容:
- 匹配成功:
363 0、364 0 - 匹配失败:
2 0(对应字典内无/ObjStm标识)
使用注意
如果你的正则引擎支持DOTALL(单行)模式,也可以将[\s\S]替换为.,同时添加s修饰符,写法如下:(\d+ \d+)(?=\s*obj\s*<<.*?\/ObjStm.*?>>)s
内容的提问来源于stack exchange,提问作者user3471272
相关产品推荐
相关产品推荐

