正则表达式之分组

正则表达式的命名分组是一个相当强大的功能,命名分组的解释是:将匹配的子字符串捕获到一个组名称或编号名称中。在获得匹配结果时,可通过分组名进行获取。

例如:

(?<a>\d+)

该正则表达式的意思是把匹配到的所有数字捕获到一个以a命名的分组中。在获得匹配结果时,可通过a进行获取

1 string str = "abc123456eracd";
2 Regex reg = new Regex(@"(?<a>\d+)");
3 Match match = reg.Match(str);
4  if (match.Success)
5  {
6         Response.Write(match.Groups["a"].Value);
7  }

结果是:123456

另外,分组还可以在正则表达式中引用,即后向引用\k<组名>

在上面我们的例子中就是\k<a>

1 string str = "www.twitter.com";
2 Regex reg = new Regex(@"w{3}.(?<a>t)w(?<b>i)\k<a>{2}er.com");
3 Match match = reg.Match(str);
4 if (match.Success)
5 {
6        Response.Write("匹配值:"+match.Groups[0].Value);
7 }

结果是:匹配值:www.twitter.com

此时\d<a>就代表前面匹配到的t,{2}则是t出现两次。

posted @ 2013-05-04 12:13  Geodon  阅读(1057)  评论(0编辑  收藏  举报