加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 具有指数运行时间的PCRE正则表达式

发布时间:2020-12-13 16:44:46 所属栏目:PHP教程 来源:网络整理
导读:在某些情况下,使用递归回溯的正则表达式实现可能会呈现指数运行时间. 我正试图为PCRE引擎找到这样一个病态的正则表达式. 我已经尝试了几个正则表达式,已知它们是Perl正则表达式的指数(例如this one),但在我的测试中它们都没有表现出PCRE的指数运行时间. 解决
在某些情况下,使用递归回溯的正则表达式实现可能会呈现指数运行时间.

我正试图为PCRE引擎找到这样一个病态的正则表达式.

我已经尝试了几个正则表达式,已知它们是Perl正则表达式的指数(例如this one),但在我的测试中它们都没有表现出PCRE的指数运行时间.

解决方法

在你的测试中,所有的正则表达式都会失败吗?当他们确实失败了,你有没找到原因?也许匹配失败,因为正则表达式引擎检测到过多的回溯.我不知道是否会发生这种情况,但尝试一个应该成功的正则表达式,就像这个:

(?i)lorem(?:.|s)*pri.

使用RegexBuddy,我将该正则表达式应用于下面文本的第一段,并按预期突出显示整个段落.当我删除段落末尾的句号时,突出显示已经消失,调试器表示它已经在一百万次操作后放弃了.这并不奇怪,但当我把时间段放回去并添加了第二段时,它仍然失败了 – 再次回溯太多了.

Lorem ipsum tritani impedit civibus ei pri,legimus antiopam no sed,quo id everti forensibus maiestatis. Vim ad intellegat consequuntur. Te dicam impedit inciderint mea. Usu prompta alterum contentiones no,ut esse fabellas splendide pri.

Ne utroque nominavi moderatius qui,ius at suas velit nihil,vidit blandit facilisi pri ut. Ad vel offendit reprehendunt,mea ex quem ipsum complectitur. Veri cetero feugait cu usu,in dolor corpora adolescens vim,at sit voluptua placerat sadipscing. Minim admodum constituam eos ut,vix ut movet causae tractatos,in pro dicat dicta dolores. Impetus praesent eum no.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读