正则元字符

元字符含义示例
.匹配除换行符外的任意单个字符a.c 可匹配 abc、a1c
^匹配字符串或行的开头^Hello
$匹配字符串或行的结尾end$
*前一项出现 0 次或多次ab* 可匹配 a、ab、abb
+前一项出现 1 次或多次ab+ 可匹配 ab、abb
?前一项出现 0 次或 1 次;也可表示非贪婪匹配colou?r 匹配 color 和 colour
{n,m}前一项重复指定次数a{2,4} 匹配 2~4 个 a
[]字符集合,匹配其中一个字符[abc] 匹配 a、b 或 c
[^]排除字符集合[^0-9] 匹配非数字字符
()分组或捕获(ab)+ 匹配 ab、abab
|表示“或者”cat|dog 匹配 cat 或 dog
\转义字符,或构成特殊序列\. 匹配真正的句点

转义字符与特殊序列、

转义元字符

在元字符前加反斜杠 \,可以匹配该符号本身。

写法匹配的字面字符示例
\..3\.14 匹配 3.14
\^^\^start 匹配 ^start
\$$\$100 匹配 $100
\**a\*b 匹配 a*b
\++A\+ 匹配 A+
\??why\? 匹配 why?
\{{\{name} 匹配 {name} 中的左花括号
\}}name\} 匹配 name}
\[[\[abc] 匹配 [abc] 中的左方括号
\]]abc\] 匹配 abc]
\((\(text 匹配 (text
\))text\) 匹配 text)
\||cat\|dog 匹配字面文本 cat|dog
\\\C:\\Temp 匹配 C:\Temp

常用特殊序列

反斜杠与字母或数字组合时,通常会引入字符类、边界、控制字符或反向引用。

写法含义示例
\d数字字符;是否仅限 ASCII 取决于引擎和标志\d+ 匹配一段数字
\D非数字字符\D+ 匹配一段非数字字符
\w单词字符;具体 Unicode 范围取决于引擎和标志\w+ 匹配一段单词字符
\W非单词字符\W+ 匹配标点、空白等非单词字符
\s空白字符,如空格、制表符、换行符a\s+b 匹配由空白分隔的 a 和 b
\S非空白字符\S+ 匹配一段连续的非空白文本
\b单词边界;在字符组 [] 中的含义可能不同\bcat\b 匹配完整单词 cat
\B非单词边界\Bcat\B 匹配单词内部的 cat
\n换行符a\nb 匹配分处两行的 a 和 b
\r回车符\r\n 匹配 Windows 常见换行序列
\t制表符a\tb 匹配由 Tab 分隔的 a 和 b
\f换页符\f 匹配 form feed 字符
\v垂直制表符;支持情况取决于引擎\v 匹配 vertical tab 字符
\xHH按两位十六进制值表示字符\x41 匹配 A
\uHHHH按四位十六进制值表示 Unicode 码位;语法依引擎而异\u4E2D 匹配 中
\1、\2按编号引用前面已捕获的分组(ab)\1 匹配 abab

引擎差异

\A、\Z、\z、命名反向引用、Unicode 属性等特殊序列并非所有正则引擎都使用相同语法;实际使用时应以目标引擎文档为准。