正则表达式可以看做一种有特定功能的小型编程语言,在一段文本中定位子字符串。利用正则表达式可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;或将提取的字符串添加到集合。
C#命名空间System.Text.RegularExpressions提供了支持正则表达式操作的类。这些类主要包括Regex,MatchCollection,Match,GroupCollection,Group,CaputerCollection和Caputer,下图表示了这些类之间的关系。
正则表达式很重要的一个应用就是在文本中提取字符串,这一功能的实现主要是靠Match类和Group类,因此理解匹配和组的概念很重要。要实现在一段文本中查找URL功能,这个例子比较简单,只要调用Regex.Matches()方法就可以找到URL的集合。示例代码如下:
public static void Main(string[] args) { string text = "I've found this amazing URL at http://www.sohu.com ,and then find ftp://ftp.sohu.com is better."; string pattern = @"\b(\S+)://(\S+)\b"; //匹配URL的模式 MatchCollection mc = Regex.Matches(text, pattern); //满足pattern的匹配集合 Console.WriteLine("文本中包含的URL地址有:"); foreach (Match match in mc) { Console.WriteLine(match.ToString()); } Console.Read(); } /* * 运行后输出如下: * 文本中包含的URL地址有: * http://www.sohu.com * ftp://ftp.sohu.com */
现在,要求变了,不仅要找出URL,还要找出每个URL的协议和域名地址,这时就要用到正则表达式的分组功能了。分组是要匹配的模式pattern用小括号括起来,分成不同的组,如可以把上面例子中的模式改为:string pattern = @"\b(?<protocol>\S+)://(?<address>\S+)\b"; 这样就用括号分成了两个组(实际上是三个组,因为匹配本身可以看做一个大组),"?<protocol>"和"?<address>"定义了每个组的别名protocol和address,这不是必须的,只是方便我们获取需要的组。示例代码如下:
public static void Main(string[] args) { string text = "I've found this amazing URL at http://www.sohu.com ,and then find ftp://ftp.sohu.com is better."; string pattern = @"\b(?<protocol>\S+)://(?<address>\S+)\b"; //匹配URL的模式,并分组 MatchCollection mc = Regex.Matches(text, pattern); //满足pattern的匹配集合 Console.WriteLine("文本中包含的URL地址有:"); foreach (Match match in mc) { GroupCollection gc = match.Groups; string outputText = "URL:" + match.Value + ";Protocol:" + gc["protocol"].Value + ";Address:" + gc["address"].Value; Console.WriteLine(outputText); } Console.Read(); } /** * 运行后输出如下: * 文本中包含的URL地址有: * URL:http://www.sohu.com;Protocol:http;Address:www.sohu.com * URL:ftp://ftp.sohu.com;Protocol:ftp;Address:ftp.sohu.com */
相关推荐
C# 正则表达式 集合 C# 正则表达式 集合 C# 正则表达式 集合
正则表达式测试工具C#完整源码,包括查找和替换功能,标注显示匹配结果。
C# 正则表达式 Regex的用法 编程语法
c#使用正则表达式验证身份证号码,工程完全可以运行,方便大家参考和学习
C#正则表达式语法大全
一个WinForm程序用以测试C#正则表达式文本框验证:只能输入整数和带两位小数的小数。如暂时无法下载,可以查看本人CSDN博客里相应文章中关于该程序的思路。能力有限,仅供交流学习,请多多指教。
C#,VS2010,利用正则表达式验证网址(url),
包含了常用正则表达式的使用,验证,正则表达式替换字符串,判断字符串是否为正整数,判断输入的字符串是否全是英文、中文....
C#正则表达式用法
C#正则表达式应用C#正则表达式应用C#正则表达式应用C#正则表达式应用
使用正则表达式来判断用户输入的IP地址格式是否正确
C#正则表达式汇总,让你更快捷学会正则表达式的用法。。。
java正则表达式,c#正则表达式.
C#正则表达式语法,正则表达式是一门很强大的学科。应用范围也很广。
由微软英文版在线文档整理而成的pdf手册,包含完整书签、文档内部链接,很适合C#正则表达式的学习与参考。
C#正则表达式的使用,希望大家可以学习学习! [C#] bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3...
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
C#正则表达式小结,C#正则表达式小结,C#正则表达式小结,C#正则表达式小结
c#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.pptc#正则表达式.ppt
c#正则表达式汇总,所有情况都有的哦。