Perl有Regexp::Optimizer,PHP中有类似的东西吗?我的搜索没有发现任何内容。
例如,Regexp :: Optimizer将转为
/foobar|fooxar|foozap/
到
/foo(?:[bx]ar|zap)/
更新:我想让这个问题保持简短,以便人们不会试图过度解释它,但事实证明它有相反的效果。我正在寻找一些需要正则表达式并输出功能相当但更有效的正则表达式的东西。我在Perl中发现了这样的东西但在PHP中没有,我想知道这样的事情是否存在。在这方面,我希望得到是/否答案,如果适用的话,附上一个链接。谢谢,并对此感到抱歉。
答案 0 :(得分:1)
不(afaik),但是ctype functions进行基本检查,人们经常使用正则表达式。
答案 1 :(得分:1)
由于PCRE支持Perl语法,因此只需使用Perl模块即可。 PHP中有一个扩展,可以立即调用Perl代码。但你可以只执行它并缓存结果,除非你需要'实时'转换:
$re = exec('perl -M"Regexp::Optimizer" -e 'print Regexp::Optimizer->new->optimize(qr'.escapeshellcmd($re).')';
答案 2 :(得分:1)
您可以将S选项传递给正则表达式,该正则表达式将在第一次编译期间对其进行研究(在此之后缓存正则表达式直到脚本死亡)
http://php.net/manual/en/reference.pcre.pattern.modifiers.php
这在Mastering Regular Expressions Ed的PHP章节中相当详细。 3,在您给出的特定示例中,它将以有用的方式进行优化。
编辑: 实际上,在考虑了这个之后,它甚至不需要S选项,因为PCRE将自己优化该特定示例。一个更好的例子可以找到几个起始字符,比如
/foobar|barfoo|helloworld/S
因为它只会查看以[fbh]
开头的项目答案 3 :(得分:0)
事实证明,截至2010年12月1日,PHP没有通用的正则表达式优化器。