我被一块RegExp卡住了,在PDF上嵌入的元数据标签中检索PDF的页数。
元数据看起来像这样:<</Metadata 1 0 R/Pages 5 0 R/Type/Catalog>>
我需要<</Metadata
之后的第一个数字,在这种情况下是1
,但是,根据页数,它可以是100。
我已经尝试与(?=metadata).*(?=r'/pages)
之间的字符串匹配,但是,如果在某些PDF格式中失败,由于结束(pages
)字符串。
您的regex匹配了太多以metadata
开始但不包括r/pages
的文本,因为您在开头和结尾都有积极的前瞻性。
您需要使用与数字匹配的'd
速记字符类(或其等效的[0-9]
字符类)。要匹配<<'/Metadata
之后的第一个整数,您可以使用向后查找,或者对数字模式使用捕获组:
(?<=<<'/Metadata's)'d+
看演示。或者将这个与捕获组一起使用(如果空白符号的数量可能多于一个,则更可取):
<<'/Metadata's+('d+)