解决灾难性回溯的工具

时间:2012-08-03 05:14:50

标签: regex perl pcre

我要求一般工具或方法找到正则表达式中的“热点”,导致不受控制的回溯。我对占有性匹配,负面前瞻断言,原子团体等有了很好的把握,但我面临的情况是,我的正则表达式错误到底在哪里都不对。

有问题的正则表达式是PCRE正则表达式;但我会为任何语言的任何指针感到高兴。

理想情况下,我希望看到一个突出正则表达式中“热点”的工具。我过去曾尝试为perl -Mre=debug创建一个包装器,但无法弄清楚我应该如何有效地处理它的输出。模糊地说,想法是针对正则表达式运行一个或多个输入字符串,并收集正则表达式中的偏移量(以及字符串中的偏移量),匹配器将继续返回。

2 个答案:

答案 0 :(得分:6)

Damian Conway用于Perl的全新Regexp::Debugger模块可让您观看与字符串匹配的正则表达式动画。它应该可以很容易地发现过多的回溯。只需安装它并使用包含的rxrx脚本,该脚本允许您输入正则表达式和字符串以匹配它。

答案 1 :(得分:3)

我意识到我已经迟到了游戏,但请查看具有正则表达式调试器的regex tester。看一下这个例子:http://regex101.com/r/pF9pC2/#debugger