php – 具有指数运行时间的PCRE正则表达式
在某些情况下,使用递归回溯的正则表达式实现可能会呈现指数运行时间.
我正试图为PCRE引擎找到这样一个病态的正则表达式. 我已经尝试了几个正则表达式,已知它们是Perl正则表达式的指数(例如this one),但在我的测试中它们都没有表现出PCRE的指数运行时间. 解决方法
在你的测试中,所有的正则表达式都会失败吗?当他们确实失败了,你有没找到原因?也许匹配失败,因为正则表达式引擎检测到过多的回溯.我不知道是否会发生这种情况,但尝试一个应该成功的正则表达式,就像这个:
(?i)lorem(?:.|s)*pri. 使用RegexBuddy,我将该正则表达式应用于下面文本的第一段,并按预期突出显示整个段落.当我删除段落末尾的句号时,突出显示已经消失,调试器表示它已经在一百万次操作后放弃了.这并不奇怪,但当我把时间段放回去并添加了第二段时,它仍然失败了 – 再次回溯太多了.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |