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  阅读(265)  评论(0编辑  收藏  举报

导航