相关疑难解决方法(0)

字符串操作与Regexps

我们经常被告知Regexps很慢,应该尽可能避免.

但是,考虑到自己做一些字符串操作的开销(不是谈论算法错误 - 这是另一回事),特别是在PHPPerl(可能Java)是什么限制,在这种情况下我们可以认为字符串操作是更好的替代?什么regexp特别是CPU贪心?

例如,对于下面的C++,Java,PHP或者Perl,你会怎么推荐

正则表达式可能会更快:

  • s/abc/def/g还是... while((i=index("abc",$x)>=0) ...$y .= substr()...基于解决方案?
  • s/(\d)+/N/g 或扫描算法

但是关于

  • 电子邮件验证regexp?
  • s/((0|\w)+?[xy]*[^xy]){2,7}/u/g

手工和特定算法不会更快(写入时间更长)?

编辑

问题的关键是要确定哪种regexp最好通过字符串操作专门针对给定问题重写?

EDIT2

一个常见的实现是Perl regexp.例如在Perl -需要知道它们是如何实现的-什么样的正则表达式的是要避免的,因为实现将使过程冗长和无效?它可能不是一个复杂的正则表达式......

编辑2011年7月(根据评论)

我并不是说所有正则表达式都很慢.已知一些特定的正则表达式模式是缓慢的,这是由于它们的特定处理以及由于它们的实现.
例如,在最近的Perl/PHP实现中,已知的是相当缓慢 - 应该避免?
答案是从那些已经进行了自己的研究(剖析器......)的人那里得到的,他们能够提供一些关于建议/要避免什么的一般指导.

php java regex string perl

6
推荐指数
2
解决办法
688
查看次数

标签 统计

java ×1

perl ×1

php ×1

regex ×1

string ×1