2015-09-04 42 views
-1

我被一張RegExp卡住以檢索PDF中嵌入的元數據標籤內PDF的頁數。用於PDF元數據的PHP RegExp

元數據是這樣的:<</Metadata 1 0 R/Pages 5 0 R/Type/Catalog>>

我需要<</Metadata後的第一個數字,在這種情況下是1但是,它可以根據頁面數爲100。

我試過匹配(?=metadata).*(?=r\/pages)之間的字符串,但是,如果由於結尾(pages)字符串導致某些PDF格式失敗。

+0

能否請您以表明你到目前爲止已經試過。 –

+0

我試過在(?= metadata)。*(?= r \/pages)之間匹配字符串,但如果由於結尾(頁)字符串導致某些PDF格式失敗。謝謝。 – Jay

+0

請不要忘記分享您發佈問題時所嘗試的內容。 –

回答

1

你的正則表達式匹配太多的文字,從metadata開始直到但不包括r/pages,因爲你在開始和結束時都有積極的預見。

您需要使用\d與數字(或其等效的[0-9]字符類)匹配的速記字符類。爲了配合<<\/Metadata後,您可以使用一個向後看,或使用捕獲組數字模式的第一個整數:

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

demo。或者使用this one與捕獲組(最好是如果空格符號的數量可能不止一個):

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