Gre*_*bet 5 regex perl pcre re2
我很好奇使用不同的正则表达式引擎取代默认的Perl的最佳实践,以及为什么我看到的模块是编译指示而不是更传统的OO /程序界面.我想知道为什么会这样.
我已经看到一些模块用于在给定的PCRE(re :: engine :: PCRE),TRE(re :: engine :: TRE)或RE2(re :: engine :: RE2)中替换Perl正则表达式引擎词汇语境.我找不到任何面向对象的模块来创建/编译使用不同后端的正则表达式.我很好奇为什么有人会选择将此功能作为一个pragma而不是一个更典型的模块来实现.看起来替换perl正则表达式引擎会比制作暴露PCRE,TRE和RE2已经提供的API的XS脚本要困难得多(取决于它暴露的API的复杂性).
我很好奇...为什么我看到的模块是编译指示而不是更传统的OO /程序界面.
可能是因为perldoc perlreapi
自5.9.5开始记录并可用的Perl正则表达式API,您可以利用Perl的解析器,它可以为您提供很多代码很少的很酷的功能.
如果您使用API,您:
split
和替换运算符s///
msixpn
作为标志传递给实现的回调函数)qr
在程序中使用引用正则表达式并轻松地将它们插入到其他正则表达式中$1
,$+{foo}
我可能错过了更多.关键是,您可以通过API获得大量免费代码和免费功能.re::engine::PCRE
例如,如果你看一下它的实现,它实际上相当短(<400行的XS代码).
如果您只是想要一种更简单的方法来实现自己的正则表达式引擎,请查看re::engine::Plugin
,这样您就可以在Perl而不是C/XS中编写实现.请注意,有一长串警告,包括不支持split
和s///
.
或者,您可以使用重载常量来扩展内置引擎,而不是实现完全自定义的引擎perldoc perlre
.这仅适用于常数正则表达式; 你必须在将变量插入到正则表达式之前显式转换变量.
归档时间: |
|
查看次数: |
245 次 |
最近记录: |