什么时候我应该更喜欢内置字符串函数的正则表达式?

Ale*_*ird 11 regex perl

有人说我应该尽可能使用正则表达式,其他人说我应该尽可能使用它.关于那个问题还是仅仅是TIMTOWTDI,有类似"Perl Etiquette"的东西吗?

Ton*_*age 10

复杂程度通常决定了我是否使用正则表达式.在决定是否使用正则表达式时,我问的一些问题是:

  • 是否没有构建的字符串函数可以相对容易地处理它?
  • 我需要捕获子串组吗?
  • 我是否需要复杂的功能,如后视或负片?
  • 我会使用字符集吗?
  • 使用正则表达式会使我的代码更具可读性吗?

如果我对其中任何一个回答是,我通常使用正则表达式.


Ash*_*ley 8

我想很多你已经得到的答案都很好.我想谈谈礼仪部分,因为我觉得有一些.

总结:如果有可用的强大解析器,请使用它而不是正则表达式; 100%的时间.不要向新手推荐别的东西.所以-

注意事项

DOS

  • 不要使用SUBSTR,指数RINDEX酌情但我们也承认,他们可能会脱落"unperly"所以当基准显示他们优于正则表达式他们是最好的使用; 在许多情况下,正则表达式可以惊人地快.
  • 不要使用正则表达式时,有没有可用的好分析器和编写解析:: RecDescent的语法是矫枉过正,太辛苦了,还是会过于缓慢.
  • 对于众所周知/可预测的数据(包括之前禁止使用正则表达式的HTML/CSV),请使用正则表达式作为丢弃代码,例如单行代码.
  • 请注意P :: RecD,Parse :: Yapp 和Marpa等更大问题的替代方案.
  • 保持自己的理事会.Perl应该很有趣.做你喜欢的事; 如果你在没有遵循建议的情况下抱怨并且横向走动,那就准备好了.:P