注意pobrelkey和David Wallace的答案都是正确的,但是这里有更多解释…
该正则表达式之所以“疯狂”(标题为BTW)是因为它受到灾难性的回溯。它具有经典的/^(A*)*$/
形式。请注意,仅当模式与目标字符串不匹配时,才会发生这种失控行为。
考虑到失控模式: ^(A*|B*|C*|D*)*$
有几种解决方法:
后两个的性能比第一个要快很多,但是所有三个都将解决“ regex wilded”问题。(是的,最好不要使用正则表达式解析HTML。)
正则表达式变得疯狂:java.util.regex.Pattern匹配器进入了高CPU循环
注意pobrelkey和David Wallace的答案都是正确的,但是这里有更多解释…
该正则表达式之所以“疯狂”(标题为BTW)是因为它受到灾难性的回溯。它具有经典的/^(A*)*$/
形式。请注意,仅当模式与目标字符串不匹配时,才会发生这种失控行为。
考虑到失控模式: ^(A*|B*|C*|D*)*$
有几种解决方法:
后两个的性能比第一个要快很多,但是所有三个都将解决“ regex wilded”问题。(是的,最好不要使用正则表达式解析HTML。)