Getting started

字符集

Code Description
\s 匹配空白符, 等价于 [\t\v\n\r\f]
\S 匹配非空白符, 等价于 [^\t\v\n\r\f]
\d 匹配数字, 等价于 [0-9]
\D 匹配非数字, 等价于 [^0-9]
\w 匹配单词字符, 等价于 [a-zA-Z0-9_]
\W 匹配非单词字符, 等价于 [^a-zA-Z0-9_]
\cx 匹配由 x 指明的控制字符, 例如: \cM 匹配一个 Control-M 或回车符

量词

{n} n 是一个非负整数, 匹配前面的子表达式 n 次, 贪婪模式
{n,} n 是一个非负整数, 匹配前面的子表达式至少 n 次, 贪婪模式
{n,m} mn 均为非负整数, 其中 n<=m, 最少匹配 n 次且最多匹配 m 次, 贪婪模式
* 匹配前面的子表达式零次或多次, 等价于 {0,}, 贪婪模式
+ 匹配前面的子表达式一次或多次, 等价于 {1,}, 贪婪模式
? 匹配前面的子表达式零次或一次, 等价于 {0,1}, 贪婪模式
{n}? n 是一个非负整数, 匹配前面的子表达式 n 次, 惰性模式
{n,}? n 是一个非负整数, 匹配前面的子表达式至少 n 次, 惰性模式
{n,m}? mn 均为非负整数, 其中 n<=m, 最少匹配 n 次且最多匹配 m 次, 惰性模式
*? 匹配前面的子表达式零次或多次, 等价于 {0,}?, 惰性模式
+? 匹配前面的子表达式一次或多次, 等价于 {1,}?, 惰性模式
?? 匹配前面的子表达式零次或一次, 等价于 {0,1}?, 惰性模式

定界符

^ 匹配开头的位置, 当正则有修饰符 m 时, 表示匹配行开头位置
$ 匹配结尾的位置, 当正则有修饰符 m 时, 表示匹配行结尾位置
\A 仅匹配字符串开头
\Z 仅匹配字符串末尾
\b 匹配单词边界, 即, \w\W^\w\w$ 之间的位置
\B 匹配非单词边界, 即, \w\w\W\W^\W, \W$ 之间的位置

特殊字符

\n 匹配换行符
\r 匹配回车符
\t 匹配水平制表符
\v 匹配垂直制表符
\f 匹配换页符
\xhh 匹配拉丁字符。比如 \xOA 等价于 \n
\uxxxx 匹配 Unicode 字符。比如 \u2028 匹配行终止符

分组与范围

. 通配符, 匹配除了少数字符(\n)之外的任意字符
(ab) 捕获型分组, 把 "ab" 当成一个整体, 比如 (ab)+ 表示 "ab" 至少连续出现一次
(?:ab) 非捕获型分组, 与 (ab) 的区别是, 它不捕获数据
(abc|xyz) 捕获型分支结构, 匹配 "abc""xyz"
(?:abc|xyz) 非捕获型分支结构, 与 (abc|xyz) 的区别是, 它不捕获数据
[abc] 匹配 abc 其中任何一个字符
[^abc] 匹配除了 abc 之外的任何一个字符
[a-z] 字符范围, 匹配指定范围内的任意字符
[^a-z] 负值字符范围, 匹配任何不在指定范围内的任意字符
\num 向后引用, 匹配第 num 个用小括号括起来的分组, 其中 num 是从 1 开始的十进制正整数

修饰符

g 全局匹配, 找到所有满足匹配的子串
i 匹配过程中, 忽略英文字母大小写
m 多行匹配, 把 ^$ 变成行开头和行结尾
s 使用单行模式

POSIX

[:alnum:] 字母字符和数字字符
[:alpha:] 字母
[:digit:] 数字字符
[:ascii:] ASCII 字符
[:blank:] 空格字符和制表符
[:space:] 空白字符
[:cntrl:] 控制字符
[:print:] 可打印字符
[:graph:] 可打印的非空白字符
[:punct:] 标点符号
[:upper:] 大写字母字符
[:lower:] 小写字母字符
[:word:] 字母字符
[:xdigit:] 十六进制字符

需转义字符

^ [ . $
{ * ( )
\ + | ?
< >