我一般要求提供一种工具或方法来在正则表达式中找到导致不受控制的回溯的“热点”。我对所有格匹配、否定前瞻断言、原子组等有相当好的掌握,但我面临的情况是不清楚我的正则表达式到底哪里错了。
有问题的正则表达式是 PCRE 正则表达式;但对于任何语言的任何指针,我都会很高兴。
理想情况下,我希望看到一个工具可以突出显示正则表达式中的“热点”。我过去曾尝试为 perl -Mre=debug
创建一个包装器,但无法真正弄清楚我应该如何有效地处理它的输出。模糊地说,这个想法是针对一个正则表达式运行一个或多个输入字符串,并收集匹配器不断返回的正则表达式中的偏移量(可能还有字符串中的偏移量)。
最佳答案
Damian Conway 的全新 Regexp::Debugger Perl 的模块可以让您观看正则表达式与字符串匹配的动画。它应该可以很容易地发现过多的回溯。只需安装它并使用包含的 rxrx
脚本,该脚本可让您输入正则表达式和字符串以匹配它。
关于regex - 解决灾难性回溯的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789650/