Regex 为什么邪恶的正则表达式会导致重做?
目前我正在研究重做:定期明确拒绝服务 某些错误(邪恶)的正则表达式将导致验证性能低下 但为什么。。。。我搜索wiki和owasp,答案主要是NFA DFA,我几乎无法理解 有谁能帮我解释一下……的好例子吗?它叫 当不存在匹配时会发生,但有O(2n)种不匹配的方法必须在返回Regex 为什么邪恶的正则表达式会导致重做?,regex,Regex,目前我正在研究重做:定期明确拒绝服务 某些错误(邪恶)的正则表达式将导致验证性能低下 但为什么。。。。我搜索wiki和owasp,答案主要是NFA DFA,我几乎无法理解 有谁能帮我解释一下……的好例子吗?它叫 当不存在匹配时会发生,但有O(2n)种不匹配的方法必须在返回false之前进行研究 来自的链接文章中的示例是(x+x++y,当与xxxxxxxxx的输入一起使用时,将需要大约2500个步骤来发现不匹配。添加一个x,需要5000个步骤,依此类推。输入100xs,就意味着数十亿年的计算时间
false
之前进行研究
来自的链接文章中的示例是(x+x++y
,当与xxxxxxxxx
的输入一起使用时,将需要大约2500个步骤来发现不匹配。添加一个x
,需要5000个步骤,依此类推。输入100x
s,就意味着数十亿年的计算时间
原因是有m
方法可以匹配x+x+
的m
x
s,也有n/m
方法可以在n
x
上重复m
可以是小于n
的任意数。探索树就像一棵分割输入方式的二叉树,导致O(2n)的时间复杂性。它被称为
当不存在匹配时会发生,但有O(2n)种不匹配的方法必须在返回false
之前进行研究
来自的链接文章中的示例是(x+x++y
,当与xxxxxxxxx
的输入一起使用时,将需要大约2500个步骤来发现不匹配。添加一个x
,需要5000个步骤,依此类推。输入100x
s,就意味着数十亿年的计算时间
原因是有
m
方法可以匹配x+x+
的m
x
s,也有n/m
方法可以在n
x
上重复m
可以是小于n
的任意数。探索树就像一棵分割输入方式的二叉树,导致O(2n)的时间复杂性。你了解NFA是什么以及它是如何工作的吗?@Bergi不,我不了解NFADo你了解NFA是什么以及它是如何工作的?@Bergi不,我不了解NFA