Reputation: 25292
The following code return 1:
Regex.Match("aaa", "(a)").Groups[1].Captures.Count
But I expect to receive 3: I see three captures of a.
Upvotes: 11
Views: 20865
Reputation: 234384
You need to either get the match count:
Regex.Matches("aaa", "(a)").Count
Or add a quantifier to the regex:
Regex.Match("aaa", "(a)+").Groups[1].Captures.Count
The regex (a)
matches only a single a
. In the first example above, that regex can be matched three times.
In the second example the regex matches several a
s at once and captures each one into group 1.
To make a choice you should consider the following differences between them:
Regex.Matches("aaba", "(a)").Count // this is 3
Regex.Match("aaba", "(a)+").Groups[1].Captures.Count // this is 2
The second only yields two captures because it matches the first sequence of two a
s but then it stops matching when it finds a b
. The +
quantifier only matches unbroken sequences.
Upvotes: 19