【发布时间】:2019-07-05 07:06:30
【问题描述】:
(\W*\d+)*(?=\W|$)
我遇到了这个正则表达式的问题,导致系统在搜索某个词时崩溃。
我正试图找到在不改变其逻辑的情况下消除灾难性回溯的方法,但到目前为止我一无所获。
任期: 0000000000000000000000000000Abc
你可以在这里测试一下,看看超时时间:
【问题讨论】:
-
您搜索什么文本?图案要求是什么?请提供一些例子。
-
嗯,可靠地防止灾难性回溯的唯一方法是远离某些容易出现的正则表达式模式。没有什么神奇的方法可以让模式在不改变它的情况下遭受灾难性回溯问题(如果有这样的方法,灾难性回溯问题在很多很多年前就已经在正则表达式引擎中解决了,你不觉得吗? )
-
至少删除
+、(\W*\d)*(?!\w)。\W匹配任何非单词数字,这将启用“线性”匹配。 -
我认为这就是我想要的。删除“+”将防止灾难性的回溯。