普通字符
[abc] 匹配中括号的所有字符
[^abc] 匹配除了中括号的所有字符
[A-Z] 匹配A-Z的大写字母区间内的字符
[a-z] 匹配a-z的小写字母区间内的字符
[0-9] 匹配0-9的数字
. 匹配除了换行、回车(\n,\r)的单个字符,等价于[^\n\r]
\s 是匹配所有空白符,包括换行
\S 非空白符,不包括换行
\w 匹配字母、数字、下划线,等价于[A-Za-z0-9_]
\d 匹配任意一个阿拉伯数字(0 到 9)等价于 [0-9]
\D 匹配非数字字符
\W 匹配非数字、字母、下划线字符
非打印字符
常用字符
\n 匹配一个换行符。等价于 \x0a 和 \cJ
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,等价于 [ \f\n\r\t\v]
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\t 匹配一个制表符。等价于 \x09 和 \cI
非常用字符
\v 匹配一个垂直制表符, 等价于 \x0b 和 \cK
\f 匹配一个换页符, 等价于 \x0c 和 \cL
\cx 匹配由x指明的控制字符, 例如, \cM 匹配一个 Control-M 或回车符, x 的值必须为 A-Z 或 a-z 之一
特殊字符
$ 匹配输入字符串的结尾位置
( ) 标记一个子表达式的开始和结束位置
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
. 匹配除换行符 \n 之外的任何单字符
[ 标记一个中括号表达式的开始
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合
{ 标记限定符表达式的开始
| 指明两项之间的一个选择
限定符
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于 {0,}
+ 匹配前面的子表达式一次或多次。例如,zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}
? 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 "do" 、 "does"、 "doxy" 中的 "do" 和 "does"。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,o{2} 不能匹配 "Bob" 中的 o,但是能匹配 "food" 中的两个 o
{n,} n 是一个非负整数。至少匹配n 次。例如,o{2,} 不能匹配 "Bob" 中的 o,但能匹配 "foooood" 中的所有 o。o{1,} 等价于 o+。o{0,} 则等价于 o*
{n,m} m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。例如,o{1,3} 将匹配 "fooooood" 中的前三个 o。o{0,1} 等价于 o?。请注意在逗号和两个数之间不能有空格。