regex - 解决灾难性回溯的工具

标签 regex perl pcre

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

有问题的正则表达式是 PCRE 正则表达式;但对于任何语言的任何指针,我都会很高兴。

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

最佳答案

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

关于regex - 解决灾难性回溯的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789650/

相关文章:

javascript - 使用正则表达式获取 CSS 值

python - 正则表达式有助于将 exp1^exp2 转换为 pow(exp1, exp2)

windows - 在 Windows 上动态重定向 child 的标准输出

c# - 正则表达式根据字符串长度匹配不同的子字符串

正则表达式 - 如何防止任何以 "de"开头但不能使用前视或后视的字符串?

python - 解析访问日志数据以适合数据库格式

perl - Perl 中的基本网络聊天应用程序

perl - Common Lisp是否具有最快的PCRE实现?

r - 为什么\K 似乎消耗了基本 R 的 gsub 中的一个字符

javascript - 如果表情符号是国旗,则使用正则表达式进行检测