正则表达式字符类
字符类结构
您可以通过字符类,指定一组字符(用方括号括起来),这些字符可以生成单个字符匹配项。某个字符类仅与单个字符匹配。例如,
gr[ae]y
将匹配到 gray
或 grey
,但不包括 graay
或 graey
。括号内的字符顺序无关紧要。您可以在字符类中使用连字符来指定字符范围。示例:
[a-z]
匹配介于单个小写字母之间的值 a
与 z
。您还可以使用多个范围,或者多个范围和单个字符的组合。示例: [0-9X]
与数字或字母匹配 X
。字符和范围的顺序并不重要。左方括号后面的插入符号用于指定要从匹配项中排除的字符。例如,
[^abc]
可以匹配除 a
, b
,或 c
。构建 | 类型 | 描述 |
|---|---|---|
[
abc ] | 简单 | 匹配项 a 或 b 或 c
|
[^abc]
| 取反 | 匹配除 以外的任意字符 a 或 b 或 c
|
[a-zA-Z]
| 范围 | 匹配项 a 截止日期 z ,或 A 截止日期 Z (含) |
[a-d[m-p]]
| 工会 | 匹配项 a 截止日期 d ,或 m 截止日期 p
|
[a-z&&[def]]
| 交集 | 匹配项 d , e ,或 f
|
[a-z&&[^xq]]
| 扣减 | 匹配项 a 截止日期 z ,但“”除外 x 与 q
|
预定义字符类
预定义字符类是常用正则表达式的便捷简写形式。
构建 | 描述 | 示例 |
|---|---|---|
.
| 匹配任意单个字符(换行符除外) | .at 匹配短语“batch Files”中的“cat”、“hat”和“bat” |
\d
| 匹配任何数字字符(相当于 [0-9] ) | \d 匹配“C3PO”中的“3”和“file_2.txt”中的“2” |
\D
| 匹配任何非数字字符(相当于 [^0-9] ) | \D 匹配“900S”中的“S”和“Q45”中的“Q” |
\s
| 匹配任何单个空白字符(相当于 [ \t\n\x0B\f\r] ) | \sbook 与“蓝皮书”中的“book”匹配,但与“notebook”中不匹配 |
\S
| 匹配任何单个非空白字符 | \Sbook 与“notebook”中的“book”匹配,但与“ Blue Book”中不匹配 |
\w
| 匹配任何字母数字字符,包括下划线(相当于 [A-Za-z0-9_] ) | r\w* 匹配“RM”和“ROOT” |
\W
| 匹配任何非字母数字字符(相当于 [^A-Za-z0-9_] ) | \W 匹配“stmd &”中的“&”、“100%”中的“%”和“$HOME”中的“$” |
POSix 字符分类 (US-ASCII)
POSix 具有一组字符类,用于表示某些通用范围。它们类似于括号字符类和预定义字符类,不同之处在于它们考虑了区域设置(本地语言/编码系统)。
构建 | 描述 |
|---|---|
\p{Lower}
| 一个小写字母字符; [a-z]
|
\p{Upper}
| 大写字母字符 [A-Z]
|
\p{ASCII}
| 一个 ASCII 字符; [\x00-\x7F]
|
\p{Alpha}
| 一个字母字符; [a-zA-z]
|
\p{Digit}
| 一个数字; [0-9]
|
\p{Alnum}
| 字母数字字符 [a-zA-z0-9]
|
\p{Punct}
| 一个标点符号,或下列值之一 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
|
\p{Graph}
| 可见字符; [\p{Alnum}\p{Punct}]
|
\p{Print}
| 可打印字符; [\p{Graph}\x20]
|
\p{Blank}
| 空格或制表符 [ t]
|
\p{Cntrl}
| 控制字符 [\x00-\x1F\x7F]
|
\p{XDigit}
| 一个十六进制数字; [0-9a-fA-F]
|
\p{Space}
| 一个空白字符; [ \t\n\x0B\f\r]
|