| 单字符表达式类型 | 示例 |
|---|---|
| 任意字符(可包含换行 s=true) | . |
| 字符类 | [xyz] |
| 非字符类 | [^xyz] |
| Perl 字符类 | \d |
| 非 Perl 字符类 | \D |
| ASCII 字符类 | [[:alpha:]] |
| 非 ASCII 字符类 | [[:^alpha:]] |
| Unicode 字符类(单字母) | \pN |
| Unicode 字符类 | \p{Greek} |
| 非 Unicode 字符类 | \PN |
| 非 Unicode 字符类 | \P{Greek} |
| 组合表达式 | 含义 |
|---|---|
xy | x 后接 y |
x|y | x 或 y(优先匹配 x) |
| 分组表达式 | 说明 |
|---|---|
(re) | 捕获分组 |
(?P<name>re) | 命名捕获分组 |
(?:re) | 非捕获分组 |
| 转义序列表达式 | 说明 |
|---|---|
\n | 换行 |
\t | 制表符 |
\x7F | 十六进制字符 |
\Q...\E | 字面量文本 |
| 重复表达式 | 含义 |
|---|---|
x* | 0 个或多个 x(贪婪) |
x*? | 0 个或多个 x(非贪婪) |
x+ | 1 个或多个 x(贪婪) |
x+? | 1 个或多个 x(非贪婪) |
x? | 0 个或 1 个 x(优先 1) |
x?? | 0 个或 1 个 x(优先 0) |
x{n,m} | n 到 m 个 x(贪婪) |
x{n,} | 至少 n 个 x |
x{n} | 恰好 n 个 x |
说明:计数形式 x{n,m} 等最大限制为 1000。
| 标志(Flags) | 说明 |
|---|---|
i | 忽略大小写(默认:false)。 如 (?i)hello 会匹配 "hello" 和 "Hello"。 |
m | 多行模式:^ 和 $ 除了匹配整个文本的开头和结尾外,还会匹配每一行的开头和结尾(默认:false) 如 (?m)^b.*,可以匹配 "apple\nbanana\ncherry" 中的 “banana” 。 |
s | 允许 . 匹配换行符 \n(默认:false)。 如 (?s)start(.*)end 会匹配 "start B \n new line \n end" |
U | 非贪婪模式开关:交换 x* 和 x*?、x+ 和 x+? 的含义等(默认:false) 反转:x* 变成 非贪婪,x*? 变成 贪婪,x+ 变成 非贪婪,x+? 变成 贪婪。 如 text:="a123b456b” 使用对比:
|
| 空匹配锚点表达式 | 说明 |
|---|---|
^ | 文本或行首 |
$ | 文本或行尾 |
\A | 文本开头 |
\b | 单词边界(相当于一边是 \w(字母/数字/下划线)同时 另一边是 \W 或 开头/结尾) |
\z | 文本结尾 (整个字符串的结尾,如 world\z可以匹配 "hello\nworld") |
| Perl 字符类 | 含义(全部仅限 ASCII) |
|---|---|
\d | 数字(等价于 [0-9]) |
\D | 非数字(等价于 [^0-9]) |
\s | 空白字符(等价于 [\t\n\f\r ]) |
\S | 非空白字符(等价于 [^\t\n\f\r ]) |
\w | 单词字符(等价于 [0-9A-Za-z_]) |
\W | 非单词字符(等价于 [^0-9A-Za-z_]) |
注:不支持 \h (水平空白),\H (非水平空白),\v (垂直空白),\V (非垂直空白)。
| 作为字符类元素的命名字符类 | |
|---|---|
[\d] | 数字(等价于 \d) |
[^\d] | 非数字(等价于 \D) |
[\D] | 非数字(等价于 \D) |
[^\D] | 非非数字(等价于 \d) |
[[:name:]] | 字符类内部的命名 ASCII 类(等价于 [:name:]) |
[^[:name:]] | 取反字符类内部的命名 ASCII 类(等价于 [:^name:]) |
[\p{Name}] | 字符类内部的命名 Unicode 属性(等价于 \p{Name}) |
[^\p{Name}] | 取反字符类内部的命名 Unicode 属性(等价于 \P{Name}) |
| ASCII 字符类 | 含义 |
|---|---|
[[:alnum:]] | 字母数字(等价于 [0-9A-Za-z]) |
[[:alpha:]] | 字母(等价于 [A-Za-z]) |
[[:ascii:]] | ASCII 字符(等价于 [\x00-\x7F]) |
[[:blank:]] | 空格字符(等价于 [\t ]) |
[[:cntrl:]] | 控制字符(等价于 [\x00-\x1F\x7F]) |
[[:digit:]] | 数字(等价于 [0-9]) |
[[:graph:]] | 可显示字符(等价于 [!-~] ≡ [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] | 小写字母(等价于 [a-z]) |
[[:print:]] | 可打印字符(等价于 [ -~] ≡ [[:graph:]]) |
[[:punct:]] | 标点符号(等价于 [!-/:-@[-`{-~]) |
[[:space:]] | 空白字符(等价于 [\t\n\v\f\r ]) |
[[:upper:]] | 大写字母(等价于 [A-Z]) |
[[:word:]] | 单词字符(等价于 [0-9A-Za-z_]) |
[[:xdigit:]] | 十六进制数字(等价于 [0-9A-Fa-f]) |