C#正则表达式的疑惑与暂时解释

今天在看一本书时,被C#的正则表达式的各种类搞糊涂了,而且网上的说明一股翻译腔或者根本不知所云。

private void button1_Click(object sender, EventArgs e)
        {
            int counter;
            Match m;
            CaptureCollection cc;
            GroupCollection gc;
            Regex r = new Regex("(Abc)+");
            m=r.Match("XYZAbcAbcAbcXYZAbcAb");
            gc=m.Groups;
            for(int i = 0; i < gc.Count; i++)
            {
                cc = gc [i].Captures;  
                counter=cc.Count;
                MessageBox.Show("Cap count" + counter.ToString());
                for(int ii = 0; ii < counter; ii++)
                {
                    MessageBox.Show(cc[ii]+"Start at"+cc[ii].Index);
                }
            }
        }

这是运行结果,我通过debug大概了解到以下情况。

Regex用来存放匹配模板,即(Abc)+。

Match用来将给定的文本通过r进行匹配(注意,只匹配一次,这是我觉得很草的,我一直以为后面那个Abc也会被匹配),得到结果m。

m调用Groups,会有两种可能:一.有匹配上的,元素1是文本中被匹配到的,元素2就是r本身。

二、没有匹配成功,那么,这将得到一个有一空元素的集合。

建立在一的情况下,Captures是用模板来扫描元素1,并将其挨个拆分成数组元素存放。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值