Regex在匹配的时候,常常会返回一个Match类的对象,今天就来看看怎么玩这个对象。

一、属性

Captures   按从里到外、从左到右的顺序获取由捕获组匹配的所有捕获的集合(如果正则表达式用 RegexOptions..::.RightToLeft 选项修改了,则顺序为按从里到外、       从右到左)。该集合可以有零个或更多的项。
Empty     获取空组。所有失败的匹配都返回此空匹配。 
Groups      获取由正则表达式匹配的组的集合。 
Index      原始字符串中发现捕获的子字符串的第一个字符的位置。 
Length      捕获的子字符串的长度。
Success     获取一个值,该值指示匹配是否成功。
Value     从输入字符串中获取捕获的子字符串。

二、方法

NextMatch     从上一个匹配结束的位置(即在上一个匹配字符之后的字符)开始返回一个包含下一个匹配结果的新 Match。 
Result       返回对指定替换模式的扩展。 
Synchronized    返回一个与提供的实例等效的 Match 实例,该实例适合在多个线程间共享。 
ToString       从输入字符串中获取捕获的子字符串。 (继承自 Capture。)

static void Main(string[] args)
{
Regex reg = new Regex(@"(?<数字分组>\d+)abc");
Match m = reg.Match("s123abcdefg");
Console.WriteLine(m.Success); //输出 True 指示匹配是否成功
Console.WriteLine(m.Value); //输出 123abc 获取匹配到的子字符串
Console.WriteLine(m.Length); //输出 6 匹配的子字符串的长度,其实m.value.Length不就行了吗
Console.WriteLine(m.Index); //输出 1 获取匹配到的子字符串的第一个字符在整个输入字符串的位置
GroupCollection GColl = m.Groups;
foreach (Group g in GColl)
{ // 整个组 自定义组
Console.WriteLine(g.Success); //输出 True True
Console.WriteLine(g.Index); //输出 1 1
Console.WriteLine(g.Length); //输出 6 3
Console.WriteLine(g.Value); //输出 123abc 123
} Console.WriteLine(Match.Empty); //输出 空白(啥都不输出,空匹配,所有失败的匹配都返回此空匹配)
CaptureCollection CColl = m.Captures;
foreach (Capture c in CColl)
{
Console.WriteLine(c.Index); //输出 1
Console.WriteLine(c.Length); //输出 6
Console.WriteLine(c.Value); //输出 123abc
} Regex reg2 = new Regex(@"\d+");
Match m2 = reg2.Match("123abc456");
Console.WriteLine(m2.Value); //输出 123
Match m3 = m2.NextMatch();
Console.WriteLine(m3.Value); //输出 456 Match m4 = Match.Synchronized(m3); //获取一个与实例等效的Match实例用于多线程共享
Console.WriteLine(m4.Value); //输出 456 Console.WriteLine(m3.ToString()); //输出 456 Regex reg3 = new Regex(@"\d+");
Match m5 = reg3.Match("123ABC");
Console.WriteLine(m5.Result("$'")); //输出 ABC 不要迷惑 这个需要了解下replacement http://www.cnblogs.com/kissdodog/archive/2013/04/25/3043173.html Console.ReadKey();
}

  另外再附上两个,输入字符串中匹配所有符合条件的例子:

static void Main(string[] args)
{
Regex reg = new Regex(@"\d+"); //第一种方法是利用Matches方法,返回所有匹配到的字符串的集合
MatchCollection MColl = reg.Matches("123abc456");
foreach (Match m in MColl)
{
Console.WriteLine(m.Value); //输出 123 456
} //第二种方法是利用Match类的NextMatch()方法
Match m2 = reg.Match("123abc456");
while (m2.Success)
{
Console.WriteLine(m2.Value); //同样输出 123 456
m2 = m2.NextMatch();
} Console.ReadKey();
}

Match类的更多相关文章

  1. C#正则表达式编程(三):Match类和Group类用法

    前面两篇讲述了正则表达式的基础和一些简单的例子,这篇将稍微深入一点探讨一下正则表达式分组,在.NET中正则表达式分组是用Match类来代表的.首先先看一段代码: /// <summary> ...

  2. C# 正则表达式类 Match类和Group类

    @"\b(\S+)://(\S+)\b"; //匹配URL的模式foreach (Match match in mc){ Console.WriteLine(match.Value ...

  3. 关于Patter类和Match类

    部分引用自: http://developer.51cto.com/art/200906/131761.htm 本文将介绍Java正则表达式中的Pattern类与Matcher类.首先我们要清楚指定为 ...

  4. Match类解析

    Matcher类:使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的,以及这些组和组的下标 ...

  5. python正则表达式详解之Match类及其方法

    1.Match对象简介 match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生.可以直接当做bool值使用,如果匹配则相当于True, 如果不匹配,则返回Non ...

  6. c# Match类

  7. C#正则表达式编程(二):Regex类用法

    上一篇讲述了在C#中有关正则表达式的类之间的关系,以及它们的方法,这一篇主要是将Regex这个类的用法的,关于Match及MatchCollection类会在下一篇讲到.对于正则表达式的应用,基本上可 ...

  8. .NET正则基础——.NET正则类及方法应用

    1        概述 初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种方法解决,本文结合一些正则应用的典型应用场景,介绍一下Regex类的基本应用.这里重点进行.NET类的介绍,对于正则的 ...

  9. 关于C#正则表达式MatchCollection类的总结,正则表达式的应用

    认识MatchCollection 类 表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合. 命名空间:  System.Text.RegularExpressions 属性:C ...

随机推荐

  1. 2B相对来说,早期它的成长速度不会像2C那么快

    叶冠泰:今天我们是在场比较少数的2B的公司,你能不能给创业者一些分享,你觉得2B跟2C的差别是什么,我们要怎样发展? 蒋韬:这可能跟性格有关系,我的性格可能更适合去做2B的业务. 对于做2B业务的创业 ...

  2. MediaInfo源代码分析 1:整体结构

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码).之前编程的时候,都是直接调用它提供的Dll,这次突然来了兴趣,想研究一下它内部究竟是怎么实现 ...

  3. 设置Eclipse启动JDK

    打开eclipse安装目录下的eclipse.ini文件,将红色内容加入 -vm ../Java/jdk1.6.0_26/bin (或者指向具体目录:D:/software/jdk_1.8u91/bi ...

  4. [转]laravel 4之视图及Responses

    http://dingjiannan.com/2013/laravel-responses/   laravel 4之视图及Responses 16 Aug 2013 Laravel的Response ...

  5. oracle查询优化

    1. 排序合理查询条件 Oracle自下而上分析顺序WHERE收条,从优化性能的角度.它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束, 之间的连接条件置于其它WHERE子句之前,即对易排 ...

  6. HDU4496_D-City(并查集删边/逆向)

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  7. cookie丢失、登陆自动退出问题解决

    cookie保存在客户端或者内存中,不易丢失.但是在某些情况下会被忽略.在项目过程中遇到过跨域丢失的情况.在VS里面运行的程序,产生的cookie默认是没有domain值的,但是给它设定domain值 ...

  8. 你所不了解的css选择器

    我们目前接触到的选择器:.class   #id  div  ...... 不了解的选择器:a>b   a+b [a~=b] [a|=b]......   一下说举5 6 7 8为css3中的定 ...

  9. T-SQL 函数概述

    T-SQL函数的类别和描述: 函数类别 作用 聚合函数 返回一个标量值,表示在某个值域上的聚合,应用于特定的聚合选择或者汇总 配置变量 返回SQL Server执行环境的信息.这些信息可用于给对象编程 ...

  10. java加载资源文件

    className.class.getResourceAsStream 用法: 第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件c ...