3

我一般要求一种工具或方法来在正则表达式中找到导致不受控制的回溯的“热点”。我对所有格匹配、否定前瞻断言、原子组等有相当好的掌握,但我面临的情况是不清楚我的正则表达式到底哪里错了。

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

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

4

2 回答 2

6

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

于 2012-08-03T05:32:35.830 回答
3

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

于 2013-10-12T18:08:41.870 回答