2008-08-26 46 views

回答

6

A Match是指示与目标文本匹配(的一部分)的特定正则表达式的对象。如果原始正则表达式包含组标记(基本上是括号中的模式),则A Group指示匹配的一部分。例如,用下面的代码:

string text = "One car red car blue car"; 
string pat = @"(\w+)\s+(car)"; 
Match m = r.Match(text); 

m将匹配对象,包含两组 - 组1,从(\w+),并且所捕获的“一”,和第2组(从(car))匹配,那么, “汽车”。

2

匹配是匹配正则表达式的字符串的一部分,因此可能会有多个字符串匹配。

在匹配中,您可以定义匿名或已命名的组,以便更容易地分割匹配。一个简单的例子是创建一个正则表达式来搜索URL,然后使用里面的组来查找协议(http),域(www.web.com),路径(/lol/cats.html)和参数以及哪些不是。

// Example I made up on the spot, probably doesn't work very well 
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])" 

一个单一的模式可以发现多次在字符串中,正如我所说的,因此,如果您使用Regex.Matches(字符串文本),你会得到多个匹配,分别由零,一个或多个组的。

这些命名组可以通过数字索引或字符串找到。可以使用上面这样的例子:

Match match = pattern.Match(urls); 
if (!match.Success) 
    continue; 
string protocol = match.Groups["protocol"].Value; 
string domain = match.Groups[1].Value; 

为了让事情更有趣,一组可以匹配多次,但后来我建议开始阅读documentation

您还可以使用组生成反向引用,并进行部分搜索和替换,但是请阅读MSDN上的更多内容。