文
章
目
录
章
目
录
正则表达式(Regex)是正则表达式的缩写。正则表达式是由不同字符组成的序列,用于描述特定的搜索模式。它也被称为有理表达式。
它主要用于搜索和操作文本字符串。简单来说,您可以使用正则表达式轻松搜索模式并将其替换为匹配模式。
这个概念或工具几乎在所有编程或脚本语言中使用,如PHP、C、C++、Java、Perl、JavaScript、Python、Ruby等。它还用于诸如Word这样的文字处理软件,帮助用户在文档中搜索文本,还用于各种集成开发环境(IDE)中。
正则表达式定义的模式从左到右应用于给定的字符串或文本。
正则表达式字符
正则表达式有以下不同类型的字符:
- 元字符(Metacharacters)
- 量词(Quantifier)
- 组和范围(Groups and Ranges)
- 转义字符或字符类(Escape Characters or Character Classes)
元字符
元字符 | 描述 | 示例 |
---|---|---|
^ | 此字符用于在字符串的开头将表达式与右侧匹配。 | ^a 是一个与以 ‘a’ 开头的字符串匹配的表达式,例如 “aab”、”a9c”、”apr”、”aaaaab” 等。 |
$ | $符号用于将表达式与字符串的末尾左侧匹配。 | r$ 是一个与以 ‘r’ 结尾的字符串匹配的表达式,例如 “aaabr”、”ar”、”r”、”aannn9r” 等。 |
. | 此字符用于匹配字符串中的任何单个字符,但不包括行终止符,即 ‘\n’。 | b.x 是一个匹配字符串 “bax”、”b9x”、”bar” 等的表达式。 |
| | 用于在左侧或右侧匹配特定字符或一组字符。如果左侧字符匹配,则忽略右侧字符。 | A|b是一个表达式,它生成多种字符串,但每个字符串都包含字符a或b。 |
\ | 用于在字符串中的此符号后转义特殊字符。 | |
A | 用于在字符串中匹配字符 ‘A’。 | 此表达式匹配至少包含一个 ‘A’ 的字符串,例如 “Amcx”、”mnAr”、”mnopAx4” 等。 |
Ab | 用于在字符串中匹配子字符串 ‘ab’。 | 此表达式匹配至少包含 ‘Ab’ 的字符串,例如 “Abcx”、”mnAb”、”mnopAbx4” 等。 |
量词
在正则表达式中,量词用于指定字符出现的次数。
字符 | 描述 | 示例 |
---|---|---|
+ | 此字符指定将左侧的表达式出现一次或多次。 | s+ 是一个表达式,它生成 “s”、”ss”、”sss” 等字符串。 |
? | 此字符指定将左侧的表达式出现0次(零次)或1次。 | aS? 是一个表达式,它生成 “a” 或 “as”,但不生成 “ass”。 |
* | 此字符指定将左侧的表达式出现0次或多次。 | Br* 是一个表达式,它生成 “B”、”Br”、”Brr”、”Brrr” 等字符串。 |
{x} | 它指定左侧的表达式仅出现x次。 | Mab{5} 是一个表达式,它生成包含5个b的字符串,如 “Mabbbbb”。 |
{x,} | 它指定左侧的表达式出现x次或更多次。 | Xb{3,} 是一个表达式,它生成包含至少3个b的各种字符串,如 “Xbbb”、”Xbbbb” 等。 |
{x,y} | 它指定左侧的表达式至少出现x次但不超过y次。 | Pr{3,6}a 是一个表达式,提供两个字符串。这两个字符串如下所示:”Prrrr” 和 “Prrrrr”。 |
组和范围
在正则表达式中,组和范围定义了方括号中包含的字符集合。
字符 | 描述 | 示例 |
---|---|---|
( ) | 用于匹配括号内的内容。 | A(xy) 是一个与以下字符串匹配的表达式:”Axy”。 |
{ } | 用于匹配左侧字符串中大括号内定义的特定次数出现。 | xz{4,6} 是一个与以下字符串匹配的表达式:”xzzzzz”。 |
[ ] | 用于匹配方括号内定义的一组字符范围中的任何字符。 | xz[atp]r 是一个与以下字符串匹配的表达式:”xzar”、”xztr” 和 “xzpr”。 |
[pqr] | 用于分别匹配p、q或r。 | 此表达式与以下字符串匹配:”p”、”q” 和 “r”。 |
[pqr][xy] | 匹配p、q或r,后跟x或y。 | 此表达式与以下字符串匹配:”px”、”qx”、”rx”、”py”、”qy” 和 “ry”。 |
(?: …) | 用于匹配非捕获组。 | A(?:nt |
[^…..] | 与方括号中未定义的字符匹配。 | 假设 Ab[^pqr] 是一个只匹配以下字符串的表达式:”Ab”。 |
[a-z] | 与小写字母a到z匹配。 | 此表达式与以下字符串匹配:”a”、”python”、”good”。 |
[A-Z] | 与大写字母A到Z匹配。 | 此表达式与以下字符串匹配:”EXCELLENT”、”NATURE”。 |
^[a-zA-Z] | 用于匹配以小写或大写字母开头的字符串。 | 此表达式与以下字符串匹配:”A854xb”、”pv4fv”、”cdux”。 |
[0-9] | 与0到9之间的数字匹配。 | 此表达式与以下字符串匹配:”9845″、”54455″。 |
[aeiou] | 仅匹配小写元音字母的方括号。 | – |
[AEIOU] | 仅匹配大写元音字母的方括号。 | – |
ab[^4-9] | 与方括号中未定义的数字或字符匹配。 | 此表达式与不包含5、6、7和8的字符串匹配。 |
转义字符或字符类
正则表达式中的转义字符或字符类用于指定特定字符或字符类。它们以反斜杠(\)开头,后面跟着一个字符或字符类的表示,用于匹配文本中的特定字符。
字符 | 描述 |
---|---|
\s | 用于匹配一个空白字符。 |
\S | 用于匹配一个非空白字符。 |
\0 | 用于匹配空字符(NULL字符)。 |
\a | 用于匹配铃声或警报字符。 |
\d | 用于匹配一个十进制数字,即从0到9。 |
\D | 用于匹配任何非十进制数字。 |
\n | 用于匹配换行符。 |
\w | 用于匹配字母数字字符[0-9a-zA-Z]。 |
\W | 用于匹配一个非单词字符。 |
\b | 用于匹配单词边界。 |