正则元字符
| 元字符 | 含义 | 示例 |
|---|---|---|
. | 匹配除换行符外的任意单个字符 | 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 属性等特殊序列并非所有正则引擎都使用相同语法;实际使用时应以目标引擎文档为准。