有人说我应该尽可能使用正则表达式,其他人说我应该尽可能使用它。关于那个问题或仅仅是TIMTOWTDI,是否有类似“Perl Etiquette”的东西?
答案 0 :(得分:10)
复杂程度通常决定我是否使用正则表达式。在决定是否使用正则表达式时,我问的一些问题是:
如果我对其中任何一个回答是,我通常使用正则表达式。
答案 1 :(得分:8)
我认为你已经得到的很多答案都很好。我想谈谈礼仪部分,因为我觉得有一些。
总结:如果有可用的健壮的解析器,请使用它而不是正则表达式; 100%的时间。不要向新手推荐别的东西。所以 -
答案 2 :(得分:4)
我不知道有关于此的任何“礼仪”。
Perl正则表达式是高度优化的(这是该语言已知的事情之一,尽管有更快的引擎),最后,如果你的正则表达式如此简单以至于它可以被字符串函数替换,我不相信正则表达式的性能会明显降低。如果您要解决的问题是时间敏感的,那么您可能会考虑其他优化可能性。
另一个重要方面是可读性。而且我认为通过正则表达式处理所有字符串转换也会增加混合和匹配不同方法的内容。
只是我的两分钱。
答案 3 :(得分:4)
虽然我会将其归类为opinionated,但我会提出自己的观点。
当字符串为:
时使用正则表达式不使用正则表达式:
答案 4 :(得分:3)
我会说,如果您需要多于一个或两个字符串函数调用,请使用正则表达式。 ;)
答案 5 :(得分:2)
Perl是正则表达式的绝佳语言。老实说,它拥有任何语言最强大的解析器之一,所以这就是为什么你看到这么多“使用正则表达式”的答案。然而,我不确定对正则表达式的厌恶是什么。
我的回答是:你能比单独使用字符串函数更简单地总结单个模式中的工作,还是需要使用多个字符串函数而不是单个正则表达式?在任何一种情况下,我都会瞄准正则表达式。否则,做适合你的事。
答案 6 :(得分:2)
对于不太复杂而且正则表达式变得臃肿的事情,会影响代码的可读性并导致性能问题。您可以通过一系列步骤,使用内置函数和其他方法来完成。你可能没有很酷的单行正则表达式,但你的代码是可读的和可维护的。
并且也不是太简单的问题,因为再次使用正则表达式是重量级的,并且通常有内置函数来处理简单的场景。
这将取决于你将要做什么。当然,请不要使用正则表达式进行解析(尤其是HTML等)