我试图用PHP抓取一系列网页,抓取标签和最早标签之间的所有内容。这是我正在使用的正则表达式:HTML的Catastophic回溯问题
|(?<=div id="body">).*?</div>|s
这对于我正在查看的大多数页面来说似乎都工作得很好。但是,它不会为其他几个人返回任何东西。我将正则表达式插入到regex101.com测试程序中,它告诉我问题在于灾难性的回溯。我试图消除回顾后的语言,甚至玩弄的东西,如:
|id="body">.*?</div>|s
然而,问题仍然持续。我已经看了一些关于灾难性回溯的其他问题,以及http://www.regular-expressions.info/catastrophic.html文章,但我无法弄清楚如何将这些修复应用到这种特殊情况。
我没有看到,落入灾难性的回溯。你能把我们链接到你试过的regex101例子吗? – Mariano
当然。 https://regex101.com/r/kY8qK0/1 – EAP
为什么你需要一个向后看? 'div id =“body”>。*? '作品也一样。 – sln