正则表达式

132 阅读1分钟

合法字符

字符解释
x字符x可代表任何合法的字符
\0mnn八进制数0mnn所表示的字符
\xhh十六进制值0xhh所表示的字符
\uhhhh十六进制值0xhhhh所表示的Unicode字符
\t制表符("\u0009")
\n新行(换行)符(“\u000A”)
\r回车符("\u000D")
\f换页符("\u000C")
\a报警(bell)符("\u0007")
\eEscape符("\u001B")
\cxx对应的的控制符。例如,\cM 匹配Ctrl-M。x值必须为AZ或az之一。

特殊字符

特殊字符说明
$匹配一行的结尾。要匹配字符本身,请使用字符本身,请使用\\
匹配一行的开头。要匹配^字符本身,请使用\^
()标记子表达式的开始和结束位置。要匹配这些字符,请使用\(和\)
[]用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用\[和\]
{}用于标记前面子表达式的出现频度。要匹配这些字符,请使用\{和\}
*指定前面子表达式可以出现零次或多次。要匹配 * 字符本身,请使用 \*
+指定前面子表达式可以出现一次或多次。要匹配 + 字符本身,请使用 \+
?指定前面子表达式可以出现零次或一次。要匹配 ? 字符本身, 请使用\?
.匹配除换行符 \n 之外的任何单字符。要匹配 . 字符本身,请使用 \.
\用于转义下一个字符,或指定八进制、十六进制字符。如果需要匹配 \ 字符,请用 \\
|指定两项之间任选一项。如果要匹配 | 字符本身,请使用 |

预定义字符

预定义字符说明
.可以匹配任何字符
\d匹配0~9的所有数字
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等
\S匹配所有的非空白字符
\w匹配所有的单词字符,包括0~9所有数字、26个英文字母和下划线(_)
\W匹配所有的非单词字符

方括号表达式

方括号表达式说明
表示枚举例如[abc],表示a、b、c其中任意一个字符;[gz],表示g、z其中任意一个字符
表示范围: -例如[a-f],表示af范围内的任意字符;[\u0041-\u0056],
表示十六进制字符\u0041到\u0056范围的字符。范围可以和枚举结合使用,
如[a-cx-z],表示a
c、x~z范围内的任意字符
表示求否:^例如[^abc],表示非a、b、c的任意字符;[^a-f],表示不是a~f范围内的任意字符
表示“与”运算:&&例如[a-z&&[def]],求az和[def]的交集,表示d、e或f
[a-z&&[^bc]],a
z范围内的所有字符,除了b和c之外,即[ad-z]
[a-z&&[^m-p]],az范围内的所有字符,除了mp范围之外的字符,即[a-lq-z]
表示“并”运算并运算与前面的枚举类似。例如[a-d[m-p]],表示[a-dm-p]

边界匹配符

边界匹配符说明
^行的开头
$行的结尾
\b单词的边界
\B非单词的边界
\A输入的开头
\G前一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符
\z输入的结尾

三种模式的数量表示符

贪婪模式勉强模式占用模式说明
X?X??X??X表达式出现零次或一次
X*X*?X*?X表达式出现零次或多次
X+X+?X+?X表达式出现一次或多次
X{n}X{n}?X{n}?X表达式出现n次
X{n,}X{n,}?X{n,}?X表达式最少出现n次
X{n,m}X{n,m}?X{n,m}?X表达式最少出现n次,最多出现m次