C#正则表达式
正则表达式语法表示的字符类
\d 从0~9的任一数字
\D 非数字字符
\w 任一单词字符,如A-Z、a-z、0-9和下划线字符
\W 非单词字符
\s 任一空白字符,包括了制表符,换行符,回车符
\S 任一非空白字符
. 任一字符
[...] 括号中的任一字符
[^...] 非括号中的任一字符
指定匹配位置
^ 其后的模式必须在字符串的开始处
$ 前面的模式必须在字符串的末尾处
\A 前面的模式必须在字符串的开始处,多行标志被忽略
\z 前面的模式必须在字符串的末尾处,多行标志被忽略
\Z 前面的模式必须位于字符串的末尾,或是位于换行符前
\b 匹配一个单词边界
\B 匹配一个非单词边界的位置,不在一个单词的开始
指定重复字符
{n} 匹配前面的字符n次
{n,} 匹配前面的字符n次或更多
{n,m} 匹配前面的字符最少n次,最多m次
? 匹配前面的字符0次或1次
+ 匹配前面的字符1次或多次
* 匹配前面的字符0次或多次
特殊字符
\\ 匹配字符 \
\. 匹配字符 .
\* 匹配字符 *
\+ 匹配字符 +
\? 匹配字符 ?
\| 匹配字符 |
简单的分组
1.捕获 ()
此分组字符组合模式在括号内匹配的字符。
输入字符串:ABC1DEF2XY
正则 ([A-Z]{3})\d
此表达式产生了如下两个匹配
1st Match = ABC1
2ndMatch = DEF2
2.非捕获 (?:)
此分组符合组合了模式在括号中匹配的字符。它是一个非捕获组,所匹配的字符将不作为一个组在捕获。
输入字符串:1ABBSA1C
正则 (?:\d|[A-Z])\w
此表达式产生3个匹配
1stMatch =1A
2ndMatch=BB
3rdMatch=SA
但是没有组被捕获
3.通过名词捕获(?<name>)
此分组符号组合了模式在方括号内匹配的字符,并把在尖括号中指定的名称作为组的名词。
高级组
1.正声明 (?=)
规定了括号中的模式必须出现在声明的右侧。模式将不构成最后匹配的一部分。
2.负声明(?!)
规定了模式不能紧邻声明的右侧。模式不构成最终匹配的一部分。
3.反向正声明(?<=)
规定了括号中的模式必须出现在声明的左侧
4.反向负声明 (?<!)
规定了模式不能紧邻声明的左侧。模式仍然不够成最终匹配的一部分
5.非回溯(?>)
防止了Regex引擎在失败时回溯以试图匹配。
posted on 2011-05-10 13:20 BarneyZhang 阅读(270) 评论(0) 编辑 收藏 举报