正则表达式大多数一般情况下有如下几个常用用途
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;
}
来实现和前面一样的效果。