.Net中常用的正则表达式选项:(1)IgnoreCase(忽略大小写):匹配时不区分大小写。(2)Multiline(多行模式):更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)(3)Singleline(单行模式)更改.的含义,使它与每一个字符匹配(包括换行符\n)。(4)IgnorePatternWhitespace(忽略空白)忽略表达式中的非转义空白并启用由#标记的注释。(5)RightToLeft(从右向左查找)匹配从右向左而不是从左向右进行。(6)ExplicitCapture(显式捕获)仅捕获已被显式命名的组。(7)ECMAScript(JavaScript兼容模式)使表达式的行为与它在JavaScript里的行为一致。
\a 报警字符(打印它的效果是电脑嘀一声)
\b 通常是单词分界位置,但如果在字符类里使用代表退格
\t 制表符,Tab
\r 回车
\v 竖向制表符
\f 换页符
\n 换行符
\e Escape
\0nn ASCII代码中八进制代码为nn的字符
\xnn ASCII代码中十六进制代码为nn的字符
\unnnn Unicode代码中十六进制代码为nnnn的字符
\cN ASCII控制字符。比如\cC代表Ctrl+C
\A 字符串开头(类似^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾(不受处理多行选项的影响)
\z 字符串结尾(类似$,但不受处理多行选项的影响)
\G 当前搜索的开头
\p{name} Unicode中命名为name的字符类,例如\p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp)平衡组
(?im-nsx:exp) 在子表达式exp中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yes|no)把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表
达式;否则使用no
(?(exp)yes) 同上,只是使用空表达式作为no
(?(name)yes|no)如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes) 同上,只是使用空表达式作为no
注意:
一个经常被问到的问题是:是不是只能同时使用多行模式和单行模式中的一种?
答案是:不是。