c#:正则匹配 分组匹配识别

背景

根据某一特定格式对文本进行识别,其中,该格式由多个部分组成,分别对每个部分进行分离。使用group.

分组

按索引获取分组内容

每个括号包起来的地方就是一个分组,

Match m1 = Regex.Match(fullText, pattern1);
if (m1.Success)
{
	GroupCollection groups = m1.Groups;
     string msg1 = m1.Value;
     string msg2 = groups.Count.ToString(); //分组个数
     string msg3 = groups[0].Value;//获取的分组内容
}

根据索引对分组内容进行获取,各个分组又是按什么顺序排的呢,首先第一个:group[0]保存的是完整的识别内容。后面开始,就是根据左括号的前后来排列
例如(A(B( C)))(DE(F))
从group[1]开始识别的分别是:
(A(B( C)))
(B( C))
( C)
(DE(F))
(F)

按命名获取分组内容

按索引毕竟比较麻烦,一旦中间修改了匹配字符串内容,就会涉及其他的代码部分,因此,给需要的分组起名十分重要。
取名的格式
(?<name>patternStr)
例如

" "^(?<mainAuthor>" + mainAuthor + ")(?<name>" + name + ")(?<code>" + code + ")

对于我的正则表达式:我给每个部分分组起名,正则匹配成功后,我将结果进行分组,就可以获取匹配到的各部分值。
例如,上面的mainAuthor,分组后,使用groups[“mainAuthor”].Value获取匹配得到的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值