.NET Framework4 中的字符转义
下表列出 .NET Framework 的正则表达式支持的字符转义。
字符或序列 |
说明 |
---|---|
以下字符之外的所有字符: . $ ^ { [ ( | ) * + ? \ |
这些字符在正则表达式中没有特殊含义;它们与自身匹配。 |
\a |
与报警 (bell) 符 \u0007 匹配。 |
\b |
在 [character_group] 字符类中,与退格键 \u0008 匹配。 (请参见 字符类。)在字符类之外,\b 是一个与单词边界匹配的定位点。 (请参见 正则表达式中的定位点。) |
\t |
与制表符 \u0009 匹配。 |
\r |
与回车符 \u000D 匹配。 请注意 \r 与换行符 \n 不是等效的。 |
\v |
与垂直制表符 \u000B 匹配。 |
\f |
与换页符 \u000C 匹配。 |
\n |
与换行符 \u000A 匹配。 |
\e |
与转义符 \u001B 匹配。 |
\nnn |
与 ASCII 字符匹配,其中 nnn最多三个数字组成,表示八进制符号代码的。 例如,\040 表示空格字符。 但是,如果此构造只有一个数字(例如,\2)被解释为反向引用,或如果它对应于捕获组的编号,则它被解释为反向引用。 (请参见 反向引用构造。) |
\xnn |
与 ASCII 字符匹配,其中 nn 是两位数字的十六进制码位。 |
\cX |
与 ASCII 控制字符匹配,其中 X 是控制字符的字母。 例如,\cC 是 CTRL-C。 |
\unnnn |
与 Unicode 字符匹配,其中 nnnn 是四位数字的十六进制码位。 注意
.NET Framework 不支持用于指定 Unicode 的 Perl 5 字符转义。Perl 5 字符转义的格式是 \x{####…},其中 ####… 是十六进制数字的序列。请改用 \unnnn。
|
\ |
在后面带有不识别为转义符的字符时,与该字符匹配。 例如,\* 匹配星号 (*) 并与 \x2A 相同。 |
下面的示例阐释正则表达式中字符转义的用法。 它分析一个包含 2009 年世界上最大城市和其人口数的名称的字符串。 用制表符 (\t) 或竖线(| 或 \u007c)将每个城市的名称与其人口分开。 以回车符和换行符将各个城市和其人口彼此分隔开。
1 using System;
2 using System.Text.RegularExpressions;
3
4 public class Example
5 {
6 public static void Main()
7 {
8 string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
9 string input = "Mumbai, India|13,922,125\t\n" +
10 "Shanghai, China\t13,831,900\n" +
11 "Karachi, Pakistan|12,991,000\n" +
12 "Dehli, India\t12,259,230\n" +
13 "Istanbul, Turkey|11,372,613\n";
14 Console.WriteLine("Population of the World's Largest Cities, 2009");
15 Console.WriteLine();
16 Console.WriteLine("{0,-20} {1,10}", "City", "Population");
17 Console.WriteLine();
18 foreach (Match match in Regex.Matches(input, delimited))
19 Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value,
20 match.Groups[2].Value);
21 }
22 }
23 // The example displyas the following output:
24 // Population of the World's Largest Cities, 2009
25 //
26 // City Population
27 //
28 // Mumbai, India 13,922,125
29 // Shanghai, China 13,831,900
30 // Karachi, Pakistan 12,991,000
31 // Dehli, India 12,259,230
32 // Istanbul, Turkey 11,372,613