正则表达式之分组
正则表达式的命名分组是一个相当强大的功能,命名分组的解释是:将匹配的子字符串捕获到一个组名称或编号名称中。在获得匹配结果时,可通过分组名进行获取。
例如:
(?<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出现两次。