代码之家  ›  专栏  ›  技术社区  ›  Axeman maxelost

您在正则表达式中使用过Perl 5.10回溯控制谓词吗?[闭门]

  •  12
  • Axeman maxelost  · 技术社区  · 17 年前

    您在正则表达式中使用过Perl 5.10回溯控制谓词吗?他们帮你解决了什么问题?


    正如背景:我做了一些修改,但没有得到任何真正有用的结果。

    作为比较,当我开始得到 (?> 分组后,它开始在我的正则表达式中出现。我喜欢将Perl正则表达式的世界调整为一组特定的假设。随着RE语言变得越来越有特色,回溯使得RE的性能与它们所基于的精简和平均FSA大相径庭。


    当有人能告诉我什么的时候 另外 ,我可以承认,它属于了解正则表达式的人的一般专业领域。这是一个 Perl regex问题,而那些用Ruby、Python、C#、Javascript或任何PCRE客户端实现帮助人们的人可能不会帮助他们,或者认为这是对他们通常读取的标记的空间浪费。

    3 回复  |  直到 11 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    是的,我有,虽然不太多。我使用它们来控制回溯,通常是为了迫使它进行更多的排列。这里有一个 amusing solution 这里有一个 practical one

        2
  •  2
  •   Alan Moore Chris Ballance    15 年前

    我已经好几年没有做任何Perl编程了,所以直到你提到这个特性,我才知道它。它看起来像是只有正则表达式大师才会使用的核心特性之一(当然,Perl社区有很多这样的特性)。另一方面,Perl 6语法看起来很有趣。

    现在,我满足于原子群和所有格量词——事实上,我实际上对它们上瘾了。我已经到了这样一个地步,我会本能地尝试以一种他们永远不会回溯的方式来编写正则表达式。有时我不得不提醒自己,小剂量的回溯是可以的,不值得去努力完全消除它。

    更新:Oniguruma风格(用于Ruby 1.9+和TextMate)支持原子组和所有格量词。当然,除了回溯控制动词外,Perl5.10还支持它们。

        3
  •  1
  •   Michael Carman    17 年前

    回溯控制特性很有趣,但我看不到解析器之外的许多应用程序。我无法想象将整个解析器塞进一个正则表达式中。(即使他们现在确实支持递归!)我对Perl6语法更感兴趣。