C#正则表达式的应用
自己正则表达式的基础看过很多了,但总是记不住,就将C#使用正则表达式的最常用的东西自己整理一下,以后直接到自己的博客上找非常方便。也希望能帮到有和我一样需求的人。
本文面向的是有一定的正则表达式的基础的人员,介绍在C#中如何使用正则表达式。并将正则表达式中一些常用的东西整理一下。新手和高手都不太适合。
C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex、Match、Group等)。先介绍一下这三个类:
Regex类:正则表达式类,个人最常用的是他的三个静态方法(每一个静态方法都有对应的动态方法)IsMatch、Match、Matches。IsMatch方法验证匹配。Regex类的IsMatch()方法返回一个bool值,如果有匹配项,返回true,否则返回false。用Match和Matches可以返回更详细的结果,结果的类型为Match类。
Match类:表示单个正则表达式匹配的结果。该类同样没有公共构造函数,可以从Regex类的Match()方法得到该类的一个实例,也可以使用Regex类的Matches()方法得到给类的一个集合。Match类表示单个正则表达式匹配的结果,并包含详细信息,包括捕获和分组信息。我常用的性和方法有Success(是否匹配成功)、Value(匹配的字符串)、Index(匹配的字符串在原符串中的位置)
Group类:说名实在话,这个类还没有用过,这里不介绍了。
剩下的主要就是匹配模式字符串的编写了,首先要说明的一点是\在C#中为转义的意思,所以如果你在字符串中直接写类似于\b这样的东西,程序为报错,解决方法有以下两种:
1 |
string pattern = @"\b(?<protocol>\S+)://(?<address>\S+)\b"; //匹配URL的模式,并分组 |
1 |
string pattern = "\\b(?<protocol>\\S+)://(?<address>\\S+)\\b"; //匹配URL的模式,并分组 |
最后来两个表记录一下自己经常忘记的内容:
元字符 |
说明 |
. |
匹配除换行符以外的任意字符 |
\b |
匹配单词的开始或结束 |
\d |
匹配数字 |
\s |
匹配任意的空白符 |
\w |
匹配字母或数字或下划线或汉字 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
表1、常用的元字符
限定符 |
说明 |
* |
重复零次或更多次 |
+ |
重复一次或更多次 |
? |
重复零次或一次 |
{n} |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
表2、常用的限定符
说点什么