1. 简介
正则表达式是尝试匹配输入文本的一种模式。模式由一个或多个字符文本、运算符或构造组成。
2. 语法
字符转义
正则表达式中的反斜杠字符(\)指示其后跟的字符(如下表)是特殊字符,或按照原意解释该字符。
转义字符 |
描述 |
模式 |
匹配(红色标出) |
\a |
与报警(bell)符\u0007匹配 |
\a |
“Error!” + ’\u0007’ |
\b |
与退格键\u0008匹配 |
[\b]{3,} |
“\b\b\b\b” |
\t |
与制表符\u0009匹配 |
(\w+)\t |
“item1\titem2\t” |
\r |
与回车符\u000D匹配。与\n不等效 |
\r\n(\w+) |
“\r\nThese are \ntwo lines” |
\v |
与垂直制表符\u000B匹配 |
[\v]{2,} |
“\v\v\v” |
\f |
与换页符\u000C匹配 |
[\f]{2,} |
“\f\f\f” |
\n |
与换行符\u000A匹配 |
\r\n(\w+) |
“\r\nThese are \ntwo lines” |
字符类
字符类与一组字符中在的任意一个字符匹配。
转义字符 |
描述 |
模式 |
匹配(红色标出) |
[character_group] |
匹配character_group中任何单个字符,区分大小写 |
[ae] |
“gray” |
[^character_group] |
求反:与不在character_group中任何单个字符匹配,区分大小写 |
[^ae] |
“gray” |
[first-last] |
字符范围:从第一个至最后一个范围内的任何单个字符 |
[A-Z] |
“AB123”匹配”A”或”B” |
. |
通配符:与除\n之外的任何单个字符匹配(可以\.匹配真是的符号) |
a.e |
“nave” |
\w |
与任何单词字符匹配 |
\w |
“ID A1.3”,匹配”I”,”D”,”A”,”1”,”3” |
\W |
与任何非单词字符匹配 |
\W |
“ID A1.3”,匹配’ ‘和’.’ |
\s |
与任何空白字符匹配 |
\w\s |
“ID A1.3”匹配“D “ |
\S |
与任何非空白字符匹配 |
\s\S |
“int _ctr”匹配“ _” |
\d |
与任何十进制数字匹配 |
\d |
“4 = IV” |
\D |
与任何非十进制数的字符匹配 |
\D |
“4 = IV”包括空白字符 |
定位点
定位点或原子零宽度断言会使匹配成功或失败,具体取决于字符串中的当前位置,但它们不会使引擎在字符串中前进或使用字符。
断点 |
说明 |
模式 |
匹配 |
^ |
从字符串的开头开始匹配;在多行模式中,必须从该行的开头开始。 |
^\d{3} |
"901-333-" 中的 "901" |
$ |
匹配必须出现在字符串的末尾,或在字符串末尾的 \n 之前;在多行模式中,必须出现在该行的末尾之前,或在该行末尾的 \n 之前 |
-\d{3}$ |
"-901-333" 中的 "-333" |
\A |
匹配必须出现在字符串的开头 |
\A\d{3} |
"901-333-" 中的 "901" |
\Z |
匹配必须出现在字符串的末尾或出现在字符串末尾的 \n 之前。 |
-\d{3}\Z |
"-901-333" 中的 "-333" |
\z |
匹配必须出现在字符串的末尾 |
-\d{3}\z |
"-901-333" 中的 "-333" |
\G |
匹配必须在上一个匹配结束的位置进行;如果以前没有匹配项,则从开始进行匹配的字符串中的位置开始。 |
\G\(\d\) |
"(1)(3)(5)[7](9)" 中的 "(1)"、"(3)" 和 "(5)" |
\b |
匹配必须出现在 \w (字母数字)和 \W (非字母数字)字符之间的边界上。 |
\b\w+\s\w+\b |
"them theme them them" 中的 "them theme" 和 "them them" |
\B |
匹配不得出现在 \b 边界上。 |
\Bend\w*\b |
"end sends endure lender" 中的 "ends" 和 "ender" |
数量词
限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项
断点 |
说明 |
模式 |
匹配 |
* |
匹配上一个元素零次或多次 |
a.*c |
"abcbc" 中的 "abcbc" |
+ |
匹配上一个元素一次或多次 |
"be+" |
"been" 中的 "bee"、"bent" 中的 "be" |
? |
匹配上一个元素零次或一次。 |
"rai?" |
"rain" 中的 "rai" |
{n} |
匹配上一个元素恰好 n 次 |
",\d{3}" |
"1,043.6" 中的 ",043"、"9,876,543,210" 中的 ",876"、",543" 和 ",210" |
{n,m} |
匹配上一个元素至少 n 次,但不多于 m 次 |
"\d{3,5}" |
"166", "17668" |
*? |
匹配上一个元素零次或多次,但次数尽可能少。 |
a.*?c |
"abcbc" 中的 "abc" |
+? |
匹配上一个元素一次或多次,但次数尽可能少。 |
"be+?" |
"been" 中的 "be"、"bent" 中的 "be" |
?? |
匹配上一个元素零次或一次,但次数尽可能少。 |
"rai??" |
"rain" 中的 "ra" |
{n}? |
匹配前面的元素恰好 n 次 |
",\d{3}?" |
"1,043.6" 中的 ",043"、"9,876,543,210" 中的 ",876"、",543" 和 ",210" |
{n,}? |
匹配上一个元素至少 n 次,但次数尽可能少。 |
"\d{2,}?" |
"166", "29", "1930" |
{ n,m}? |
匹配上一个元素的次数介于 n 和 m 之间,但次数尽可能少。 |
"\d{3,5}?" |
"166", "17668" |