.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 相同。

示例(C#)

下面的示例阐释正则表达式中字符转义的用法。 它分析一个包含 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

posted on 2011-08-28 22:48  wangjy  阅读(1192)  评论(0编辑  收藏  举报