【发布时间】:2011-06-11 11:50:38
【问题描述】:
是否有任何工具可以采用特定的正则表达式并返回与正则表达式匹配的特定数量的字符所需的操作数相关的最坏情况?
例如,给定(f|a)oo.*[ ]baz,引擎可能要经过多少步才能匹配 100 个字符?
如果有一个工具可以获取一堆文本样本并显示每次运行的平均操作,我也会感兴趣。
我意识到这在很大程度上取决于所使用的引擎和实现——但我不知道这有多普遍。因此,如果它在许多语言中都很常见(使我的问题过于模糊),我会对 Perl 和 Python 特别感兴趣。
【问题讨论】:
-
好问题!显然这将取决于正则表达式。众所周知,纯正则表达式(甚至像下面引用的
(x+x+)+y示例)承认纯有限状态机自动机,但常见的正则表达式库实际上实现了带有回溯的那些,在很大程度上是为了支持像上下文这样的花哨的东西。像您描述的工具将非常适合捕捉en.wikipedia.org/wiki/…
标签: python regex perl optimization analysis