正则表达式的基本语法

本文主要内容:1、字符的匹配语法;2、定位字符语法;3、重复字符语法;4、转义字符语法;5、简单代码示例

一、字符匹配语法

字符类

匹配的字符

语法例子

\d

0-9的任意一数字

\d\d可以匹配72,但不匹配aa7a

\D

非数字字符

\D\D\D匹配abc,但不匹配123

\w

任一单词字符,如A-Za-z0-9和下划线字符

\w\w\w\w匹配Ab-2,但不匹配¥%*Ab_@

\W

非单词字符

\W可以匹配@,但不匹配a

\s

任一空白字符,包括了制表符,换行符,回车符,换页符和垂直制表符

匹配所有传统的空字符,包括用HTML,XML和其他标准定义的字符

\S

任一非空白字符

每一个非空字符:A%&G3

.

任一字符

.”匹配任一字符,换行符除外

[…]

括号中的任一字符

[abc]匹配单个字符abc,但不能匹配其他字符

[a-z]匹配a-z的任一字符

[^…]

非括号中的任一字符

[^abc]匹配abc除外的任一字符,但可以匹配ABC

[^a-z]匹配非a-z的任一字符,但可以匹配所有的大写字母。

二、定位字符

定位字符

描述

^

其后的模式必须在字符串的开始处,如果是一个多行字符串,应该在任一行的开始。对于多行文本(包含回车符的字符串),需要设定Muitiline标志

$

前面的模式必须在字符串的末尾处,如果是一个多行字符串,应该在任一行的末尾。

\A

前面的模式必须在字符串的开始处,多行标志被忽略

\z

前面的模式必须在字符串的末尾处,多行标志被忽略

\Z

前面的模式必须位于字符串的末尾,或是位于换行符前

\b

匹配一个单词边界,实质上是单词字符和非单词字符间的点。单词字符是[a-zA-z0-9_]中的任一字符。位于一个单词的开始

\B

匹配一个非单词边界的位置,不在一个单词的开始

三、基本的重复字符

重复字符

含义

举例

{n}

匹配前面的字符n

x{2}匹配xx,但不匹配xxxx

{n,}

匹配前面的字符n次或更多

X{2}匹配2个或更多的x,xx,xxx,xxxx,….

{n,m}

匹配前面的字符最少n次,最多m次。如果n0,可以不指定

X{2,4}匹配了xx,xxxxxxx,但不匹配xxxxxx

?

匹配前面的字符0次或1次可以省略

x?匹配x 或空

+

匹配前面的字符1次或多次

x+ 匹配x,xx,或更多的x

*

匹配前面的字符0次或多次

x*匹配0个或多个x

四、转义序列

转义序列

描述

\\

匹配字符“\

\.

匹配字符“.

\*

匹配字符“*

\+

匹配字符“+

\?

匹配字符“?

\|

匹配字符“|

\(

匹配字符“(”

\)

匹配字符“)”

\{

匹配字符“{

\}

匹配字符“}

\^

匹配字符“^

\$

匹配字符“$”

\n

匹配换行符

\r

匹配回车符

\t

匹配tab

\v

匹配垂直制表符

\f

匹配换页符

\nnn

匹配一个三位八进制数指定的ASCII字符,例如\103匹配一个大写的C

\xnn

匹配一个二位十六进制指定的ASCII字符,例如\x43匹配C

\unnnn

匹配一个4位十六进制指定的Unicode字符

\cV

匹配一个控制字符,例如,\cV匹配Ctrl-V

五、代码示例

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 using System.Text.RegularExpressions;
7 namespace y.RegexExample
8 {
9 class MatchMethod
10 {
11 public static void Print()
12 {
13 string inputString = "A sailor went to sea to sea,to see what he could see could see.";
14 Regex myRegex = new Regex("se.");
15 Match matchMade = myRegex.Match(inputString);
16
17 while (matchMade.Success)
18 {
19 Console.WriteLine(matchMade.Value);
20 matchMade = matchMade.NextMatch();
21 }
22
23 Console.WriteLine("Collection:");
24 MatchCollection matchCollection = myRegex.Matches(inputString);
25 if (matchCollection.Count > 0)
26 {
27 Console.WriteLine(matchCollection[1].Value);
28 }
29 }
30 }
31 }

参考文献:

《C#字符串和正则表达式参考手册》

posted @ 2011-08-15 16:30  走过留痕  阅读(372)  评论(0编辑  收藏  举报