您是否在正则表达式中使用了Perl 5.10回溯控制动词?

时间:2008-10-31 14:41:40

标签: regex perl

你在你的正则表达中使用过Perl 5.10回溯控制动词了吗?他们帮助你完成了哪些问题?


就像背景:我做了一些小事,但我无法获得任何真正有用的结果。

作为比较,当我开始得到(?>分组所做的事情时,它开始出现在我的正则表达式中。我喜欢将Perl正则表达式世界调整为一组特定假设的想法。随着RE语言越来越有特色,回溯使得RE的表现与他们所依据的精益和平均FSA大相径庭。


当有人告诉我RE的其他实现有回溯控制动词 - 而PCRE 时,我可以承认它属于一般专业领域了解正则表达的人。这是一个 Perl 正则表达式问题,帮助人们使用Ruby,Python,C#,Javascript或任何PCRE客户端实现的人可能无法帮助或将其视为浪费空间他们通常阅读的标签。

3 个答案:

答案 0 :(得分:3)

是的,我有,但不是太多。我用它们来控制回溯,通常是强迫它做出更多的排列。这是一个amusing solution,这里是practical one

答案 1 :(得分:2)

我做了任何Perl编程已经有好几年了,所以在你提到之前我甚至都不知道这个功能。它看起来像只有正则表达式大师会使用的那些核心功能之一(当然,Perl社区有很多这些)。另一方面,Perl 6 Grammars看起来像玩起来会很有趣。

现在,我满足于原子团体和占有量词.--实际上,我几乎沉迷于他们。它已经到了我反思性地尝试以这样一种方式编写正则表达式的地步,它们永远不会回溯。我有时会提醒自己,小剂量回溯是可以的,并且完全消除它是不值得的。

p.s。据我所知,占有量词仅由Java,PCRE(PHP,Apache,Flex 3 / ActionScript 3)以及RegexBuddy,EditPad Pro和PowerGrep使用的JGSoft正则表达式引擎支持。

更新:Oniguruma风味(用于Ruby 1.9+和TextMate)支持原子组和占有量词。当然,除了回溯控制动词之外,Perl 5.10还支持它们。

答案 2 :(得分:1)

老实说,我还没有使用过5.10。和一些新功能一样,我只在个人脚本中使用它们。对于生产,我的目标是兼容5.8。对于CPAN,我的目标是5.6。这阻止了我玩大多数新玩具。

回溯控制功能很有趣,但我看不到解析器之外的许多应用程序。我无法想象将整个解析器填充到单个正则表达式中。 (即使他们现在支持递归!)我对Perl6语法更加兴奋。