C#正则表达式类Match和Group类的理解

      正则表达式可以看做一种有特定功能的小型编程语言,在一段文本中定位子字符串。利用正则表达式可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;或将提取的字符串添加到集合。正则表达式的基本语法可参见:深入浅出之正则表达式(一)深入浅出之正则表达式(二)

      C#命名空间System.Text.RegularExpressions提供了支持正则表达式操作的类。这些类主要包括Regex,MatchCollection,Match,GroupCollection,Group,CaputerCollection和Caputer,下图表示了这些类之间的关系。

 

      正则表达式很重要的一个应用就是在文本中提取字符串,这一功能的实现主要是靠Match类和Group类,因此理解匹配和组的概念很重要。要实现在一段文本中查找URL功能,这个例子比较简单,只要调用Regex.Matches()方法就可以找到URL的集合。示例代码如下:

文本中提取URL的


      现在,要求变了,不仅要找出URL,还要找出每个URL的协议和域名地址,这时就要用到正则表达式的分组功能了。分组是要匹配的模式pattern用小括号括起来,分成不同的组,如可以把上面例子中的模式改为:string pattern = @"\b(?<protocol>\S+)://(?<address>\S+)\b"; 这样就用括号分成了两个组(实际上是三个组,因为匹配本身可以看做一个大组),"?<protocol>"和"?<address>"定义了每个组的别名protocol和address,这不是必须的,只是方便我们获取需要的组。示例代码如下:

提取URL协议和地址的示例

      参考资料:正则表达式的妙用--获得数组C#利用正则表达式搜索字符串深入正则表达式

原文地址:https://www.cnblogs.com/freshman0216/p/1262397.html