《C#字符串与正则表达式参考手册》学习笔记之Match类和MatchCollection类


利用Match类和MatchCollection类,可以获得通过一个正则表达式实现的每一个匹配的细节。Match表示一次匹配,而MatchCollection类是一个Match对象的集合其中的每一个对象都表示了一次成功的匹配。

我们可以使用Regex对象的match()方法和Matches()方法来检索匹配。

1.match()方法

前三种方法是实例方法,后两种是静态方法,所有方法都返回一个Match对象,其中包含了匹配的各种细节!注意:match()对象只代表实现的第一次匹配,而不是所有的匹配!区别于Matches()!


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Regular
{
    class Program
    {
        static void Main(string[] args)
        {
            string inStr = "sea sem seg,word,love,sed";
            Regex myRegex=new Regex("se.");
            Match myMatch = myRegex.Match(inStr,4);

            while (myMatch.Success)
            {
                //MessageBox.Show(myMatch.Value);
                Console.WriteLine(myMatch.Value);
                myMatch = myMatch.Nextmatch();
            }
             Console.ReadKey();
        }
    }
}

2.MatchCollection()方法

使用Regex.Matches()方法,可以得到MathCollection对象的一个引用。这个集合类中包含分别代表每一次正则表达式匹配的Match对象。在处理多匹配时尤其有用,而且可以代替Match.Nextmatch()方法。

MatchCollection类有两个有用的属性CountItem。Count返回匹配的次数,Item允许通过下表访问每一个Match对象!

//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG
//
//

Match类和MatchCollection类的更多相关文章

  1. swift – 使用“如果让…”与许多表达式

    Swift1.2更新从Swift1.2开始,如果允许允许展开多个可选项,那么现在可以写下这个,如下例所示:您甚至可以交换条件,如:以前在Swift1.2之前有效没有一个丑陋的力量包装,你可以这样做:实际上仍然很冗长这是因为可选类型的表单类型?实际上是可选的的缩写,这是一个大致如下的枚举:然后,您可以使用模式匹配作为任何其他枚举。

  2. android – Airbnb探索屏幕等工具栏中的自定义视图

    我想在应用程序(工具栏)的顶部栏区域添加多个输入字段,以便我的应用程序进行搜索.我看到Airbnb做到了最好!我在CoordinatorLayout中尝试了使用AppBarLayout的各种场景,但都失败了.是否有可能获得相同或类似的效果?

  3. QuickBlox WebRtc VideoChat Android

    几天我正在研究quickblox.i让对手观点在我的观点下面,如this.它工作正常,但是当我保持像skype这样的视图时:–对手视图在全屏幕上,我的视图位于对手视图的右上角,它只渲染一个最终渲染的视图.我在quickblox网站上看了quickbloxwebrtc示例.我看到了该示例中的代码,但它包含了一些会议对话,其中包含一些复杂的循环视图编码,对我来说,单个一对一的谈话是必需的,任何人都可以

  4. android – 如何在AlertDialog中显示CalendarView?

    我正在尝试在警报对话框中显示CalendarView,但所有显示的都是月/年和星期几.这些是布局文件的内容:这是我用于将布局添加到AlertDialog的代码:任何帮助都会非常感激,因为我完全被难倒了.该应用程序没有给我任何错误继续.解决方法要正确显示日历,需要最小高度.其余代码工作正常.

  5. 无法使用android.support.v7.widget.AppCompatTextView实例化以下类

    最近我在Android工作室的应用程序中将我的sdk从25改为26,我在我的所有xml中都遇到了这个奇怪的错误.目前错误并没有以我能看到的任何方式影响我的应用程序,但是每次我必须编辑或更改xml中的某些内容时都很烦人.这里的错误:无法实例化以下类–android.support.v7.widget.AppCompatTextView我的朋友:编辑:添加了一些我的xml代码解决方法我也收到了这个错误

  6. android软键盘出现时会破坏布局

    解决方法由于输入进入你的EditText,它总是会移动一些东西.考虑使用两种布局,一种用于键盘关闭时,一种用于键盘启动时.使用ViewSwitcher可能会有所帮助.

  7. android – 我可以像这样创建一个nestedScroll布局吗?

    我认为它可以通过nestedScrollingChildnestedScrollingParent来实现.但我无法理解他们.谁可以帮助我!产品经理坚持设计.ScrollView包含LinearLayout,“TabLayout”和ViewPager.ViewPager包含2个包含RecyclerView的片段或仅包含2个RecyclerView.当ScrollView滚动到Bottom时,Recy

  8. android – 在NestedScrollView onBindViewHolder中的RecyclerView调用所有getItemCount大小

    当我将RecyclerView放入nestedScrollView时,然后onBindViewHolder调用所有行,比如说我有一个大小为30的列表,那么即使没有滚动,也会同时为所有30行调用onBindViewHolder我的xml是但如果我删除nestedScrollView它正常工作.解决方法高度问题引起的问题.1)编辑nestedScrollView&RecyclerView如下:2)确保

  9. android – 将ImageView对齐到屏幕的右上角

    我的布局中有一个imageView,它可以作为不可缩放的背景.但我需要将我的图像放在屏幕的右上角.我现在将我的图像放在屏幕的左上角.这是我对imageview的xml:我也尝试将它放在一个linearlayout中,它具有gravity=“top|right”但是不会删除图片周围的空白区域,因为它具有match_parent大小.我还需要保持图片的比例,所以我不能做fill_parent.我希望有人可以帮助我!解决方法也许加你的ImageView?我有类似的问题.

  10. android – ListView展开项目动画仅在第二次点击后有效

    我有一个带有以下视图的CardView:当我打开我的ListViewview_2设置为Visible.GONE所以你无法看到它.现在我使用了thisblog的ExpandAnimation.这里有代码:我在AdapterView中使用它:我现在只有一个问题:当我在列表中展开一个项目时,它第一次立即出现而没有动画,之后关闭和打开动画顺利进行.有人知道为什么第一次打开没有动画但是之后的每次点击都会触发正确的动画吗?

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部