正则表达式的基本语法
本文主要内容:1、字符的匹配语法;2、定位字符语法;3、重复字符语法;4、转义字符语法;5、简单代码示例
一、字符匹配语法
字符类 |
匹配的字符 |
语法例子 |
\d |
从0-9的任意一数字 |
\d\d可以匹配72,但不匹配aa或 |
\D |
非数字字符 |
\D\D\D匹配abc,但不匹配123 |
\w |
任一单词字符,如A-Z、a-z、0-9和下划线字符 |
\w\w\w\w匹配Ab-2,但不匹配¥%*或Ab_@ |
\W |
非单词字符 |
\W可以匹配@,但不匹配a |
\s |
任一空白字符,包括了制表符,换行符,回车符,换页符和垂直制表符 |
匹配所有传统的空字符,包括用HTML,XML和其他标准定义的字符 |
\S |
任一非空白字符 |
每一个非空字符:A%&G3等 |
. |
任一字符 |
“.”匹配任一字符,换行符除外 |
[…] |
括号中的任一字符 |
[abc]匹配单个字符a、b或c,但不能匹配其他字符 [a-z]匹配a-z的任一字符 |
[^…] |
非括号中的任一字符 |
[^abc]匹配a、b、c除外的任一字符,但可以匹配A、B或C [^a-z]匹配非a-z的任一字符,但可以匹配所有的大写字母。 |
二、定位字符
定位字符 |
描述 |
^ |
其后的模式必须在字符串的开始处,如果是一个多行字符串,应该在任一行的开始。对于多行文本(包含回车符的字符串),需要设定Muitiline标志 |
$ |
前面的模式必须在字符串的末尾处,如果是一个多行字符串,应该在任一行的末尾。 |
\A |
前面的模式必须在字符串的开始处,多行标志被忽略 |
\z |
前面的模式必须在字符串的末尾处,多行标志被忽略 |
\Z |
前面的模式必须位于字符串的末尾,或是位于换行符前 |
\b |
匹配一个单词边界,实质上是单词字符和非单词字符间的点。单词字符是[a-zA-z0-9_]中的任一字符。位于一个单词的开始 |
\B |
匹配一个非单词边界的位置,不在一个单词的开始 |
三、基本的重复字符
重复字符 |
含义 |
举例 |
{n} |
匹配前面的字符n次 |
x{2}匹配xx,但不匹配x或xxx |
{n,} |
匹配前面的字符n次或更多 |
X{2}匹配2个或更多的x,如xx,xxx,xxxx,…. |
{n,m} |
匹配前面的字符最少n次,最多m次。如果n为0,可以不指定 |
X{2,4}匹配了xx,xxx和xxxx,但不匹配x或xxxxx |
? |
匹配前面的字符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 |
五、代码示例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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#字符串和正则表达式参考手册》