在哪些情况下使用正则表达式更好?

时间:2009-11-07 21:26:08

标签: regex use-case

我开始学习正则表达式,我想知道:在哪些情况下最好使用它们?

7 个答案:

答案 0 :(得分:7)

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

简而言之,正则表达式是一种有效的方式

  • 处理数据
  • 搜索并替换字符串
  • 提供扩展字符串处理。

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

我在比较字符串(preg_match),替换子字符串(sed,preg_replace),替换字符(sed,preg_replace),搜索文件中的字符串(grep),拆分字符串(preg_split)等时使用正则表达式。

这是一种非常灵活且广泛使用的模式表达语言,它非常有用。

BUT!就像他们对扑克说的那样,它很容易学习,但很难掌握。

我刚刚遇到一个question,我认为它非常适合RegEx,看看并为自己做决定。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

在某些情况下,正则表达式>> NOT< 是合适的(通常;总是存在异常)。

  • 解析HTML
  • 解析XML

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

另外一定要考虑未来的维护程序员(可能是你)。注释和/或精心选择的方法/常量/变量名称可以创造一个与众不同的世界,特别是对于不熟悉正则表达式的开发人员。

答案 6 :(得分:0)

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