2009-11-07 93 views

回答

7

正则表达式是一种模式匹配的形式,您可以将其应用于文本内容。举例来说,DOS通配符?和*您可以使用当您搜索文件 。这是RegExp的一个非常有限的子集。例如,如果要查找以“fn”开头的所有文件,后跟1到4个随机字符,并以“ht.txt”结尾,则不能使用通常的DOS通配符来完成此操作。另一方面,RegExp可以处理更复杂的模式。

正则表达式,总之,有效地

  • 处理数据
  • 搜索和替换字符串
  • 提供扩展的字符串处理的方式。

通常,正则表达式本身可以提供字符串处理,其他功能(如内置字符串方法和属性只能在复杂函数或循环中使用它们时才可以)。

+0

+1非常好的比喻! – 2009-11-07 21:32:42

4

当您尝试查找/替换/验证复杂的字符串模式时。

2

在某些情况下,如果您需要更好的性能,您应该避免使用正则表达式来编写代码。一个例子是解析非常大的CSV文件。

2

正则表达式是用于解析文本的dsl(域特定语言)。就像xpath是一个用于遍历xml的dsl。它实质上是一种通用语言中的迷你语言。您可以在很少量的代码中完成相当多的工作,因为它专门用于狭义目的。正则表达式的一个非常常见的用途是检查字符串是否是电子邮件地址,电话号码,ssn等...

4

在比较字符串(preg_match),替换子字符串(sed,preg_replace),替换字符串(sed,preg_replace),搜索文件中的字符串(grep),分割字符串(preg_split)等。

这是一个非常灵活和广泛的模式表达式语言,它是非常有用的知道。

但是!这就像他们对扑克的评价,这很容易学,但很难掌握。

我刚碰到一个question,我认为这对RegEx来说是完美的,请看看并自己决定。

2

还有一些情况下,正则表达式是>>不是< <合适(通常;总是有例外)。

  • 解析HTML
  • 解析XML

在上述情况下DOM解析器是几乎总是一个更好的选择。语法很复杂,边缘案例太多,比如嵌套标签。

另外一定要考虑未来的维护程序员(可能是你)。评论和/或精心挑选的方法/常量/变量名称可能会造成一个不同的世界,特别是对于在正则表达式中不流利的开发人员而言。

+0

应该更强调单词“不”,同时扫描我几乎认为你是主张使用html和xml的正则表达式 – Kris 2009-11-09 15:02:58

+0

@Kris:增加了更多的cowbell! ;) – TrueWill 2009-11-09 15:15:13

0

正则表达式对验证自由文本输入的格式特别有用。当然,他们不能验证数据的正确性,只是它的格式。而且您必须记住某些类型值的区域差异(例如电话号码或邮政编码)。但是对于可以将有效输入定义为文本模式的情况,正则表达式可以快速进行验证。

相关问题