2011-02-11 63 views
4

下面的代碼返回1:C#正則表達式組多次捕捉

Regex.Match("aaa", "(a)").Groups[1].Captures.Count 

但我希望收到3:我看到的三個捕獲。

+0

爲了捕獲多個組,使用`Regex.Matches`它會返回一個包含所有匹配項的MatchCollection。 – 2011-02-11 15:32:02

回答

9

您需要可以拿到賽計數:

Regex.Matches("aaa", "(a)").Count 

還是一個量詞添加到正則表達式:

Regex.Match("aaa", "(a)+").Groups[1].Captures.Count 

正則表達式匹配(a)只有一個a。在上面的第一個示例中,該正則表達式可以匹配三次。

在第二個例子中,正則表達式一次幾個a s比和捕捉每一個進組1

要做出一個選擇,你應該考慮它們之間的區別在於:

Regex.Matches("aaba", "(a)").Count // this is 3 
Regex.Match("aaba", "(a)+").Groups[1].Captures.Count // this is 2 

第二僅產生兩個捕獲,因爲它匹配兩個a的第一個序列,但當它找到b時,它會停止匹配。量詞只能匹配完整的序列。