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 str ="ahttpp://www.bkjia.com/s?tn=sitehao12";我们想把字符www.bkjia.com提取出来

用正则表达式: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.bkjia.net

假设还是字符串string str ="ahttpp://www.bkjia.com/s?tn=sitehao12";

用正则表达式.

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

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

4.分割字符

假如有字符string str = "http:ww/w.bkjia.com";要以: / .这样的符号为分割符,把字符分割成只包含字母的子字符串

用正则表达式:

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

用string类的函数

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 下一页
【内容导航】
第1页:入门简介 第2页:常用的特殊字符(元字符,限定字符)
第3页:注释,分组,向后引用,零宽断言,贪婪 第4页:平衡组,递归匹配
第5页:命名空间System.Text.RegularExpressions下面的类简介1 第6页:命名空间System.Text.RegularExpressions下面的类简介2

相关内容