使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每个数值数字,或(更糟)使用 [0-9a-zA-Z]表示任何字母数字字符,还有一段相当漫长的过程。为了减轻处理这些常用但冗长模式的痛苦,事先定义了预定义元字符集合。正则表达式的不同实现定义了不同的预定义元字符集合,下面描述的预定义元字符集合在 .NET Framework 中得到 System.Text.RegularExpressions API 的支持。这些预定义元字符的标准语法是,在反斜杠 / 后跟一个或多个字符。多数预定义元字符只有一个字符,它们的使用很容易,是冗长字符类的理想替代字符。以下是两个示例:/d 匹配所有数值数字,/w 匹配所有单词字符(字母数字加下划线)。例外情况是一些特定字符代码匹配,此时必须指定所匹配字符的地址,如 /u000D 将匹配 Unicode 回车符。下面列出一些最常用的字符类及其等效的元字符。
元字符 | 等效字符类 |
/a |
匹配铃声(警报);/u0007 |
/b |
匹配字符类外的字边界,它匹配退格字符,/u0008 |
/t |
匹配制表符,/u0009 |
/r |
匹配回车符,/u000D |
/w |
匹配垂直制表符,/u000B |
/f |
匹配换页符,/u000C |
/n |
匹配新行,/u000A |
/e |
匹配转义符,/u001B |
/040 |
匹配 3 位 8 进制 ASCII 字符。/040 表示空格(十进制数 32)。 |
/x20 |
使用 2 位 16 进制数匹配 ASCII 字符。此例中,/x2- 表示空格。 |
/cC |
匹配 ASCII 控制字符,此例中是 ctrl-C。 |
/u0020 |
使用 4 位 16 进制数匹配 Unicode 字符。此例中 /u0020 是空格。 |
/* |
不代表预定义字符类的任意字符都只作为该字符本身对待。因此,/* 等同于 /x2A(是文字 *,不是 * 元字符)。 |
/p{name} |
匹配已命名字符类“name”中的任意字符。支持名称是 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(货币)。 |
/p{name} |
匹配已命名字符类“name”中不包括的文本。 |
/w |
匹配任意单词字符。对于非 Unicode 和 ECMAScript 实现,这等同于 [a-zA-Z_0-9]。在 Unicode 类别中,这等同于 [/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}]。 |
/W |
/w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符类别 [^/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}]。 |
/s |
匹配任意空白区域字符。等效于 Unicode 字符类 [/f/n/r/t/v/x85/p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,/s 等效于 [ /f/n/r/t/v] (请注意前导空格)。 |
/S |
匹配任意非空白区域字符。等效于 Unicode 字符类别 [^/f/n/r/t/v/x85/p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,/S 等效于 [^ /f/n/r/t/v] (请注意 ^ 后的空格)。 |
/d |
匹配任意十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [/p{Nd}]、非 Unicode 的 [0-9]。 |
/D |
匹配任意非十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [/p{Nd}]、非 Unicode 的 [^0-9]。 |