有人说尽可能经常使用正则表达式,而另一些人则说应该尽量少用。是否存在类似于“Perl礼仪”的东西或只是TIMTOWTDI?
一般来说,我使用正则表达式的取决于复杂度水平。在决定是否使用正则表达式时,我会问自己以下几个问题:
如果我对其中任何一个问题回答是肯定的,我通常会使用正则表达式。
我认为你已经得到了很多好的答案。我想谈一下礼仪问题,因为我认为这很重要。
总结起来:如果有一个强大的解析器可用,100% 的时间都应该使用它而不是正则表达式。永远不要向新手推荐其他任何东西。所以——
index
的所有时间里,我从未听说过 rindex
!谢谢,我学到了新东西。我想现在我需要再次研究 perlfunc
,因为我已经深入了解 Perl。 - Joel Berger虽然我认为这个观点对于SO来说有点太主观,但我会提出我的看法。
当字符串具有以下特点时,请使用正则表达式:
请不要使用正则表达式来:
我认为,如果你需要使用超过一两个字符串函数调用来完成任务,那么就应该使用正则表达式。 ;)
s/PERL/Perl
。http://perldoc.perl.org/perlfaq1.html#What's-the-difference-between-%22perl%22-and-%22Perl%22%3f - Joel Berger对于不太复杂的问题,避免使用过于臃肿的正则表达式,影响代码可读性并导致性能问题。您可以通过一系列步骤、使用内置函数和其他手段来完成。虽然您可能没有一个酷炫的单行正则表达式,但您的代码将更易读且易于维护。
同样,对于过于简单的问题,也不要使用正则表达式,因为正则表达式是重量级的,通常有内置函数可以处理简单的场景。
这将取决于您要做什么。当然,请不要使用正则表达式来解析(尤其是HTML等)。
/x
,使用空格、缩进、分组和注释;使用命名捕获;使用较小的片段;使用语法化的正则表达式等等。 - tchrist$s =~ s/\A.{5}//s
而不是substr($s, 0, 5) = ""
,还有无数类似的例子。当人们没有将结构化编程和小即是美的经典原则应用到正则表达式时,他们通常会为正则表达式自找麻烦。语法化的正则表达式可以极大地帮助人们,此外还有其他工具。 - tchrist