我正在尝试使用preg_match_all在pdf文件中查找所有对象。我使用以下正则表达式,该表达式返回700个我知道存在的匹配项中的2个:
mixins.ListModelMixin
在python中可以使用相同的正则表达式,但是如果使用PHP进行匹配,则在Windows和Linux上这似乎失败。这只是一个错误,还是我需要使用一些我不知道的标志?
答案 0 :(得分:0)
问题似乎与文件中流的大小有关。当我读取包含file_get_contents的文件并在其上运行preg_match_all时,我从preg_match得到回溯限制错误,但是当我从notepad ++复制文本并粘贴到提供相同正则表达式的Web表单中时,却没有。原来,当我粘贴它时,它读为UTF8,因此字符更少,因此我没有达到回溯限制。流的大小刚好足以用作UTF8,但我会遇到稍长的ANSI文本的回溯限制。
最终,我最终将正则表达式更改为仅搜索对象的开始,然后使用strpos查找结束。事实证明,这是比([0-9] + [0-9] +)obj(。*?)endobj
更为有效的方法。