C#正则表达式

刚接触正则表达式时可能会觉得很晕乎.其实它的作用是很简单的,只不过实现的细节方面有些复杂.正则表达式是用来解析字符串的.而解析字符串不外乎是达到下面几种目的

1.验证某一长串字符串中是否有符合某个条件的子字符串

2.从长字符串中提取符合某个条件的子字符串

3.把符合条件的子字符串替换成另外的字符串

4.把一个字符串分割成几个小字符串

正则表达式的复杂主要是体现在怎么指定那个"条件".其实实现上面说的4个目的大部分时候用string类的一些函数也照样能实现.只不过有时太复杂了点

下面举几个简单的例子说下怎么实现上面的4个目的.使用正则表达式时要引用命名空间using System.Text.RegularExpressions;

1.验证字符

假如有字符串string str = "I am arwen";我们想验证下这个字符串里是否包含字符"wen".

用正则表达式:  bool exist = Regex.IsMatch(str, "wen");

用string类的函数:bool exist = str.Contains("wen");

2.提取字符

用正则表达式:string subStr = Regex.Match(str, @"w{3}\..*\.com").Value;

用string类的函数:

int start = str.IndexOf("w");

int end = str.IndexOf("m");

string subStr = str.Substring(start, end - start + 1);

随着问题的复杂我们发现string类的函数就有点力不 从心了.假如是随便给一段未知的字符串,然后要求提取出一个网址来.用string类函数实现起来很复杂而且容易出错

而用上面那句简单的正则表达式就能正确的提取.

3.替换字符

还是和上面类似的例子,假如随便给一段字符串,把里面的网址替换成www.linuxidc.net

用正则表达式.

string newStr = Regex.Replace(str, @"w{3}\..*\.com", "wwww.linuxidc.net");

这个用string的函数实现起来就更麻烦了啊.这里就不用它来实现了.反正思路就是要先搜索出字符串里的网址,再把它替换成www.linuxidc.net

4.分割字符

用正则表达式:

string[] strs = Regex.Split(str, @"[:/\.]");

用string类的函数

string[] strs = str.Split(new char[] { ':', '/', '.' });

在上面的例子中我们会看到@"w{3}\..*\.com" 和@"[:/\.]这样奇怪的字符串,我们一般把它们叫作模式(pattern),也就是说通过它来指明要符合某个条件.在正则表达式的应用中最难的地方就是怎么通过它们来指定条件.其中的符号都有特殊的含义

相关推荐