[数据结构与算法]模式匹配与文本处理-匿名组与命名组

本文介绍了正则表达式中的两种分组构造:匿名组和命名组。通过实例演示了如何使用这两种分组来匹配特定的模式,并展示了如何通过命名组简化匹配结果的检索过程。

匿名组
这里可能用到几个不同的分组构造。通过括号内围绕的正则表达式就可以组成第一个构造。正如稍后要介绍的一样,既然也可以命名组,大家就有考虑把这个构造作为匿名组。作为一个实例,请看看下列字符串:
“08/14/57 46 02/25/59 45 06/05/85 18 03/12/88 16 09/09/90 13“
这个字符串就是由生日和年龄组成的。如果需要匹配年两而不要生日,就可以把正则表达式作为一个匿名组来书写:
(\s\d{2}\s)
通过编写这种方式的正则表达式,字符串中的每个匹配就从1开始的数字进行确认。为全部匹配保留数字零,这通常会包含更多的数据。

            string words = "08/14/57 46 02/25/59 45 06/05/85 18"+"03/12/88 16 09/09/90 13";
            string regExp1 = "(\\s\\d{2}\\s)";
            MatchCollection matchSet = Regex.Matches(words,regExp1);

            foreach (Match aMatch in matchSet) 
            {
                Console.WriteLine(aMatch.Groups[0].Captures[0]);
            }

这里写图片描述

命名组
组通常用名字构建。命名的组更容易使用,这是因为再检索匹配时可以通过名字引用到组。命组是作为正则表达式前缀的问号和一对尖括号括着的名字组成的。例如,为了在先前的程序代码”ages”中命名组,可以把正则表达式写下列形式:
(?\s\d{2}\s)

            string words = "08/14/57 46 02/25/59 45 06/05/85 18 " + " 03/12/88 16 09/09/90 13";
            string regExp1 = "(?<dates>(\\d{2}/\\d{2}/\\d{2}))\\s";
            MatchCollection matchSet = Regex.Matches(words, regExp1);

            foreach (Match aMatch in matchSet)
            {
                Console.WriteLine("Date:{0}",aMatch.Groups["dates"]);
            }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值