2008-08-26 41 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上的更多內容。