.NET正则表达式使用高级技巧之工作特点
转义符 | 说明 |
一般字符 | 除 .$ ^ { [ ( | ) * + ? / 外,其他字符与自身匹配。 |
/a | 与响铃(警报)/u0007 匹配。 |
/b | 在正则表达式中,/b 表示单词边界(在 /w 和 /W 之间),不过,在 [] 字符类中,/b 表示退格符。在替换模式中,/b 始终表示退格符。 |
/t | 与 Tab 符 /u0009 匹配。 |
/r | 与回车符 /u000D 匹配。 |
/v | 与垂直 Tab 符 /u000B 匹配。 |
/f | 与换页符 /u000C 匹配。 |
/n | 与换行符 /u000A 匹配。 |
/e | 与 Esc 符 /u001B 匹配。 |
/040 | 将 ASCII 字符匹配为八进制数(最多三位);如果没有前导零的数字只有一位数或者与捕获组号相对应,则该数字为后向引用。例如,字符/040 表示空格。 |
/x20 | 使用十六进制表示形式(恰好两位)与 ASCII 字符匹配。 |
/cC | 与 ASCII 控制字符匹配;例如,/cC 为 Ctrl-C。 |
/u0020 | 使用十六进制表示形式(恰好四位)与 Unicode 字符匹配。 |
/ | 在后面带有不识别为转义符的字符时,与该字符匹配。例如,/* 与 /x2A 相同。 |
字符类 | 说明 |
. | 匹配除 /n 以外的任何字符。如果已用 Singleline 选项做过修改,则句点字符可与任何字符匹配。 |
[ aeiou ] | 与指定字符集中包含的任何单个字符匹配。 |
[^ aeiou ] | 与不在指定字符集中的任何单个字符匹配。 |
[0-9a-fA-F] | 使用连字号 (–) 允许指定连续字符范围。 |
/p{ name } |
与 {name} 指定的命名字符类中的任何字符都匹配。支持的名称为 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing。可以使用 GetUnicodeCategory 方法找到某个字符所属的 Unicode 类别。
|
/P{ name } | 与在 {name} 中指定的组和块范围不包括的文本匹配。 |
/w | 与任何单词字符匹配。等效于 Unicode 字符类别 [/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}/p{Lm}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 /w 等效于 [a-zA-Z_0-9]。 |
/W | 与任何非单词字符匹配。等效于 Unicode 字符类别 [^/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}/p{Lm}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 /W 等效于 [^a-zA-Z_0-9]。 |
/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 | 与任何十进制数字匹配。对于 Unicode 类别的 ECMAScript 行为,等效于 /p{Nd},对于非 Unicode 类别的 ECMAScript 行为,等效于 [0-9]。 |
/D | 与任何非数字匹配。对于 Unicode 类别的 ECMAScript 行为,等效于 /P{Nd},对于非 Unicode 类别的 ECMAScript 行为,等效于 [^0-9]。 |
断言 | 说明 |
>^ | 指定匹配必须出现在字符串的开头或行的开头。 |
$ | 指定匹配必须出现在以下位置:字符串结尾、字符串结尾处的 /n 之前或行的结尾。 |
/A | 指定匹配必须出现在字符串的开头(忽略 Multiline 选项)。 |
/Z | 指定匹配必须出现在字符串的结尾或字符串结尾处的 /n 之前(忽略 Multiline 选项)。 |
/z | 指定匹配必须出现在字符串的结尾(忽略 Multiline 选项)。 |
/G | 指定匹配必须出现在上一个匹配结束的地方。与 Match.NextMatch() 一起使用时,此断言确保所有匹配都是连续的。 |
/b | 指定匹配必须出现在 /w(字母数字)和 /W(非字母数字)字符之间的边界上。匹配必须出现在单词边界上,即出现在由任何非字母数字字符分隔的单词中第一个或最后一个字符上。 |
/B | 指定匹配不得出现在 /b 边界上。 |
限定符 | 说明 |
* | 指定零个或更多个匹配;例如 /w* 或 (abc)*。等效于 {0,}。 |
+ | 指定一个或多个匹配;例如 /w+ 或 (abc)+。等效于 {1,}。 |
? | 指定零个或一个匹配;例如 /w? 或 (abc)?。等效于 {0,1}。 |
{ n } | 指定恰好 n 个匹配;例如 (pizza){2}。 |
{ n ,} | 指定至少 n 个匹配;例如 (abc){2,}。 |
{ n , m } | 指定至少 n 个但不多于 m 个匹配。 |
*? | 指定尽可能少地使用重复的第一个匹配(等效于 lazy *)。 |
+? | 指定尽可能少地使用重复但至少使用一次(等效于 lazy +)。 |
?? | 指定使用零次重复(如有可能)或一次重复 (lazy ?)。 |
{ n }? | 等效于 {n} (lazy {n})。 |
{ n ,}? | 指定尽可能少地使用重复但至少使用 n 次 (lazy {n,})。 |
{ n , m }? | 指定介于 n 次和 m 次之间、尽可能少地使用重复 (lazy {n,m})。 |