📜  正则表达式、正则语法和正则语言(1)

📅  最后修改于: 2023-12-03 14:55:53.933000             🧑  作者: Mango

正则表达式、正则语法和正则语言

正则表达式是一种用来匹配和操作文本的工具,能够通过一些特殊的语法规则,查找、替换、删除、提取文本中的特定内容。

正则语法
字符类

在正则表达式中,可以使用字符类来匹配一组特定的字符。字符类以方括号 [] 来表示,其中包含了要匹配的字符:

  • [abc] 匹配字符 abc
  • [0-9] 匹配数字
  • [a-zA-Z] 匹配任意的字母

除了普通字符,字符类中还可以包含转义字符,例如:

  • [\w] 匹配任何字母、数字或下划线
  • [\d] 匹配任何数字(等价于 [0-9]
  • [\s] 匹配空格、制表符等空白字符
量词

量词指定了要匹配的字符或子串出现的次数:

  • * 匹配前面的字符或子串零次或多次
  • + 匹配前面的字符或子串至少一次
  • ? 匹配前面的字符或子串零次或一次
  • {n} 匹配前面的字符或子串恰好出现 n 次
  • {n,} 匹配前面的字符或子串至少出现 n 次
  • {n,m} 匹配前面的字符或子串出现 n~m 次

量词可以跟在字符、字符类、括号表达式等后面,例如 a+[a-z]{2,5}

括号表达式

括号表达式可以将一组字符或子串当作一个整体来匹配。通常用括号将括号表达式括起来,例如 (abc)

括号表达式还支持分组和引用,分组用于分隔不同的子表达式,引用则用于反向引用之前匹配的内容:

  • (abc|def) 匹配 abcdef
  • (a+)b\1 匹配一个或多个 a,后面跟着一个 b,最后再跟着之前匹配的 a
转义字符

有些字符在正则表达式中有特殊含义,需要使用反斜杠 \ 进行转义,例如:

  • \. 匹配点号 .,因为点号在正则表达式中表示任意字符
  • \+ 匹配加号 +,因为加号在正则表达式中表示前面的字符或子串出现一次或多次
正则语言

正则表达式描述的是一组字符串的模式,这些模式可以组成一个正则语言。常见的正则语言包括:

  • Perl 正则语言
  • POSIX 正则语言
  • PCRE(Perl Compatible Regular Expressions)语言
  • JavaScript 正则语言
  • Python 正则语言

每种语言都针对不同的应用领域和使用场景,提供了不同的正则表达式特性和语法规则,开发者可以根据自己的需求选取最合适的语言和工具。