用于PDF元数据的PHP RegExp

时间:2015-09-04 07:15:29

标签: php regex

我坚持使用一块RegExp来检索PDF中嵌入的元数据标签中PDF的页数。

元数据如下所示:<</Metadata 1 0 R/Pages 5 0 R/Type/Catalog>>

我需要<</Metadata之后的第一个数字,在这种情况下是1,但根据页数可能是100。

我尝试将其中的字符串与(?=metadata).*(?=r\/pages)进行匹配,但是如果由于结尾(pages)字符串而导致某些PDF格式失败。

1 个答案:

答案 0 :(得分:1)

你的正则表达式匹配的文字太多,从metadata开始,但不包括r/pages,因为你在开头和结尾都有正面的预测。

您需要使用匹配数字(或其等效的\d字符类)的[0-9]速记字符类。要匹配<<\/Metadata之后的第一个整数,您可以使用后视,或使用捕获组作为数字模式:

(?<=<<\/Metadata\s)\d+

demo。或者将this one与捕获组一起使用(如果空白符号的数量可能多于一个,则更可取:)

<<\/Metadata\s+(\d+)