检查低效的正则表达式

时间:2013-06-30 08:37:13

标签: ruby regex

  • 如何检查Ruby 2.0 onigmo(或1.9 oniguruma)正则表达式是否包含诸如灾难性回溯之类的低效率?

  • 如何针对字符串尝试使用Ruby 2.0或(1.9)正则表达式匹配的内部步骤?

1 个答案:

答案 0 :(得分:3)

根据此页面,Regexbuddy允许检测它们:

  

Regexbuddy宽恕,因为它检测到它在圈内,并中止匹配尝试。其他正则表达式引擎(如.NET)将永远继续运行,而其他引擎则会因堆栈溢出而崩溃(如Perl,版本5.10之前)。

http://www.regular-expressions.info/catastrophic.html

(不确定信息的最新信息)

还发现了这个相关的问题:

How do you debug a regex?

对于ruby,似乎还可以启用其他编译标志:

  

在设置了几个特殊的编译器标志后,从源代码重新编译了Ruby 2.0(ruby-head):ONIG_DEBUG_COMPILEONIG_DEBUG_MATCH

http://patshaughnessy.net/2012/4/3/exploring-rubys-regular-expression-algorithm