[down=attachments/month_0709/a200791417113.doc]点击下载此文件[/down] 字符转义 提供有关转义符集的信息,这些转义符通知正则表达式分析器字符不是运算符而应解释为匹配字符。 大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符 (单个反斜杠)通知正则表达式分析器反斜杠后面的字符不是运算符。例如,分析器将星号 (*) 视为重复限定符,而将后跟星号的反斜杠 (*) 视为 Unicode 字符 002A。 下表中列出的字符转义在正则表达式和替换模式中都会被识别。 转义符 说明 一般字符 除 .$ ^ { [ ( | ) * + ? 外,其他字符与自身匹配。
a 与响铃(警报)u0007 匹配。 b 如果在 [] [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/0f8bffab-ee0d-4e0e-9a96-2b4a252bb7e4.htm]字符类[/url]中,则与退格符 u0008 匹配;如果不是这种情况,请参见本表后面的“注意”部分。 t 与 Tab 符 u0009 匹配。 r 与回车符 u000D 匹配。 v 与垂直 Tab 符 u000B 匹配。
f 与换页符 u000C 匹配。
n 与换行符 u000A 匹配。
e 与 Esc 符 u001B 匹配。
将 ASCII 字符匹配为八进制数(最多三位);如果没有前导零的数字只有一位数或者与捕获组号相对应,则该数字为后向引用。(有关更多信息,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/e702ae9d-67bc-45e6-81f7-0a110b4548d2.htm]反向引用[/url]。)例如,字符 表示空格。
x20 使用十六进制表示形式(恰好两位)与 ASCII 字符匹配。
cC 与 ASCII 控制字符匹配;例如,cC 为 Ctrl-C。
u0020 使用十六进制表示形式(恰好四位)与 Unicode 字符匹配。
注意
.NET Framework 不支持用于指定 Unicode 的 Perl 5 字符转义。Perl 5 字符转义的格式是 x{####…},其中“####…”是十六进制数字的序列。应改为使用本行中描述的 .NET Framework 字符转义。 在后面带有不识别为转义符的字符时,与该字符匹配。例如,* 与 x2A 相同。
注意
转义字符 b 是一个特例。在正则表达式中,b 表示单词边界(在 w 和 W 之间),不过,在 [] 字符类中,b 表示退格符。在替换模式中,b 始终表示退格符。 替换 提供有关在替换模式中使用的特殊构造的信息。 只在替换模式中允许替换。对于正则表达式中的类似功能,使用后向引用(如
1)。有关后向引用的详细信息,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/e702ae9d-67bc-45e6-81f7-0a110b4548d2.htm]反向引用[/url]和[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/567a4b8d-0e79-49dc-8df9-f4b1aa376a2a.htm]后向引用构造[/url]。 字符转义和替换是在替换模式中识别的唯一的特殊构造。下面几部分描述的所有语法构造只允许出现在正则表达式中;替换模式中不识别它们。例如,替换模式
a*${txt}b
会插入字符串“a*”,该字符串后跟按
txt
捕获组匹配的子字符串,该子字符串后跟字符串“b”(如果有)。在替换模式中,*
字符不会识别为元字符。与此类似,在正则表达式匹配模式中不识别
$
模式。在正则表达式中,$
指定字符串的结尾。 下表显示如何定义命名并编号的替换模式。
字符 说明
$ 数字 替换按组号 number(十进制)匹配的最后一个子字符串。
${ name } 替换由 (? ) 组匹配的最后一个子字符串。 $$ 替换单个“$”字符。 $& 替换完全匹配本身的一个副本。 $` 替换匹配前的输入字符串的所有文本。 $' 替换匹配后的输入字符串的所有文本。 $+ 替换最后捕获的组。 $_ 替换整个输入字符串。[pagesplitxx] 字符类 提供有关定义要匹配的子字符串的正则表达式字符集的信息。 字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项。下表总结了字符匹配语法。 字符类
说明 .
匹配除 n 以外的任何字符。如果已用 Singleline 选项做过修改,则句点字符可与任何字符匹配。有关更多信息,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/c82dc689-7e82-4767-a18d-cd24ce5f05e9.htm]正则表达式选项[/url]。 [ aeiou ]
与指定字符集中包含的任何单个字符匹配。 [^ aeiou ]
与不在指定字符集中的任何单个字符匹配。 [0-9a-fA-F]
使用连字号 (–) 允许指定连续字符范围。 p{ name }
与 {name} 指定的命名字符类中的任何字符都匹配。支持的名称为 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing。 P{ name }
与在 {name} 中指定的组和块范围不包括的文本匹配。 w
与任何单词字符匹配。等效于 Unicode 字符类别
[p{Ll}p{Lu}p{Lt}p{Lo}p{Nd}p{Pc}p{Lm}]。如果用 [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/c82dc689-7e82-4767-a18d-cd24ce5f05e9.htm]ECMAScript 选项[/url]指定了符合 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 字符类别
[fnrtvx85p{Z}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 s 等效于 [ fnrtv]。 S
与任何非空白字符匹配。等效于 Unicode 字符类别
[^fnrtvx85p{Z}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 S 等效于 [^ fnrtv]。 d
与任何十进制数字匹配。对于 Unicode 类别的 ECMAScript 行为,等效于 p{Nd},对于非 Unicode 类别的 ECMAScript 行为,等效于 [0-9]。 D
与任何非数字匹配。对于 Unicode 类别的 ECMAScript 行为,等效于 P{Nd},对于非 Unicode 类别的 ECMAScript 行为,等效于 [^0-9]。 可以使用 GetUnicodeCategory 方法找到某个字符所属的 Unicode 类别。 有关 Unicode 字符类别的更多信息,请参见文档“Unicode Data File Format”(Unicode 数据文件格式),此文档可从 Unicode 技术委员会 (UTC) 的网站 http://www.unicode.org/Public/UN ... ral_Category_Values 获得。 正则表达式选项

提供有关修改正则表达式模式的匹配行为的选项集的信息。 可以使用影响匹配行为的选项修改正则表达式模式。可以通过下列两种基本方法之一设置正则表达式选项:可以在 Regex (pattern, options) 构造函数中的 options 参数中指定,其中 options 是 RegexOptions 枚举值的按位“或”组合;也可以使用内联 (?imnsx-imnsx:) [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/0fc18634-f590-4062-8d5c-f0b71abe405b.htm]分组构造[/url]或 (?imnsx-imnsx) [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/7d10d11f-680f-4721-b047-fb136316b4cd.htm]其他构造[/url]在正则表达式模式内设置它们。 在内联选项构造中,一个选项或一组选项前面的减号 (-) 用于关闭这些选项。例如,内联构造
(?ix-ms)
将打开 IgnoreCase 和 IgnorePatternWhiteSpace 选项而关闭 Multiline 和 Singleline 选项。默认情况下,关闭所有正则表达式选项。 下表列出了 RegexOptions 枚举的成员以及等效的内联选项字符。请注意,选项 RightToLeft 和 Compiled 只适用于表达式整体而不允许内联。(它们只能在 Regex 构造函数的 options 参数中指定。)选项 None 和 ECMAScript 不允许内联。 RegexOption 成员
内联字符
说明 None
N/A
指定不设置任何选项。 IgnoreCase
i
指定不区分大小写的匹配。 Multiline
m
指定多行模式。更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。 ExplicitCapture
n
指定唯一有效的捕获是显式命名或编号的 (?…) 形式的组。这允许圆括号充当非捕获组,从而避免了由 (?:…) 导致的语法上的笨拙。 Compiled
N/A
指定正则表达式将被编译为程序集。生成该正则表达式的 Microsoft 中间语言 (MSIL) 代码;以较长的启动时间为代价,得到更快的执行速度。 Singleline
s
指定单行模式。更改句点字符 (.) 的含义,以使它与每个字符(而不是除 n 之外的所有字符)匹配。 IgnorePatternWhitespace
x
指定从模式中排除非转义空白并启用数字符号 (#) 后面的注释。(有关转义空白字符的列表,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/f49cc9cc-db7d-4058-8b8a-422bc08b29b0.htm]字符转义[/url]。)请注意,空白永远不会从字符类中消除。 RightToLeft
N/A
指定搜索是从右向左而不是从左向右进行的。具有此选项的正则表达式将移动到起始位置的左边而不是右边。(因此,起始位置应指定为字符串的结尾而不是开头。)为了避免构造具有无限循环的正则表达式的可能性,此选项不能在中流指定。但是,(?<) 回顾后发构造提供了可用作子表达式的类似替代物。 RightToLeft 只更改搜索方向。它不会反转所搜索的子字符串。[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/0fc18634-f590-4062-8d5c-f0b71abe405b.htm]预测先行[/url]和[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/0fc18634-f590-4062-8d5c-f0b71abe405b.htm]回顾后发[/url]断言不改变:预测先行向右搜索;回顾后发向左搜索。 ECMAScript
N/A
指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCase 和 Multiline 标志一起使用。将 ECMAScript 同任何其他标志一起使用将导致异常。 CultureInvariant
N/A
指定忽略语言中的区域性差异。有关更多信息,请参见在 RegularExpressions 命名空间中执行不区分区域性的操作。[pagesplitxx]
原子零宽度断言 提供有关零宽度断言的信息,该断言根据正则表达式分析器在输入字符串中的当前位置而使匹配成功或失败。 下表中描述的元字符不会使引擎在字符串中前进或使用字符。它们只是根据字符串中的当前位置使匹配成功或失败。例如,^ 指定当前位置在行或字符串的开头。因此,正则表达式
^FTP
只会返回那些在行的开头出现的字符串“FTP”的匹配项。
断言 说明
^ 指定匹配必须出现在字符串的开头或行的开头。有关更多信息,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/c82dc689-7e82-4767-a18d-cd24ce5f05e9.htm]正则表达式选项[/url]中的 Multiline 选项。
$ 指定匹配必须出现在以下位置:字符串结尾、字符串结尾处的 n 之前或行的结尾。有关更多信息,请参见[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/c82dc689-7e82-4767-a18d-cd24ce5f05e9.htm]正则表达式选项[/url]中的 Multiline 选项。
A 指定匹配必须出现在字符串的开头(忽略 Multiline 选项)。
Z 指定匹配必须出现在字符串的结尾或字符串结尾处的 n 之前(忽略 Multiline 选项)。
z 指定匹配必须出现在字符串的结尾(忽略 Multiline 选项)。
G 指定匹配必须出现在上一个匹配结束的地方。与
Match.NextMatch()
一起使用时,此断言确保所有匹配都是连续的。
b 指定匹配必须出现在 w(字母数字)和 W(非字母数字)字符之间的边界上。匹配必须出现在单词边界上,即出现在由任何非字母数字字符分隔的单词中第一个或最后一个字符上。
B 指定匹配不得出现在 b 边界上。
限定符 提供有关修改正则表达式的可选数量数据的信息。 限定符将可选数量的数据添加到正则表达式。限定符表达式应用于紧挨着它前面的字符、组或字符类。.NET Framework 正则表达式支持最小匹配 (lazy) 限定符。 下表描述了影响匹配的元字符。数量 n 和 m 是整数常数。
限定符 说明
* 指定零个或更多个匹配;例如
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 次之间、尽可能少地使用重]] >