正则表达式中的Group

正则表达式大多数一般情况下有如下几个常用用途

1. 进行匹配

   例如:[\u4e00-\u9fa5]正则表达式用来匹配中文字符

2.进行替换

例如:如下代码片段将Hello world中的world替换成了China

 var reg = new System.Text.RegularExpressions.Regex("world");
 Console.WriteLine(reg.Replace("Hello world", "China"));

那么问题来了如果我们想将一个字符串中两部分内容调换顺序应该怎么做呢?今天要介绍的Group登场了如下代码中正则表达式需分为两个Group

 var reg = new System.Text.RegularExpressions.Regex(@"^(\d*)([a-zA-z]*)$");
 var matchResult = reg.Match("123Abc");
  for (int i = 0; i < matchResult.Groups.Count; i++)
  {
      Console.WriteLine(matchResult.Groups[i]);
  }

1.(\d*)匹配0到N个数字
2.([a-zA-z]*)匹配所有大小写字母
得到的结果matchResult中的Groups为一个类型为GroupCollection的属性。从下图输出的结果可以看出Groups的Count=3
index=0的时候的时候的Group输出成字符串为“123Abc””
index=1的时候的时候的Group输出成字符串为“123””
index=2的时候的时候的Group输出成字符串为“Abc””

如果这个例子中我们想调换数字和字母的顺序为字母在前数字在后怎么操作呢?
很简单,只需要写下如下代码就行

Console.WriteLine(reg.Replace("123Abc", "$2$1"));

上面代码中 2 1分别对应的是Abc和123,所以输入的结构就是Abc123
另外正则表达式的Replace还有另外一个重载

public string Replace(string input, MatchEvaluator evaluator);

MatchEvaluator的定义如下

public delegate string MatchEvaluator(Match match);

所以我们也可以定义一个委托方法

public static string MatchEvaluator(Match match)
{
    return match.Groups[2].Value + match.Groups[1].Value;
}

来实现和前面一样的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值