match.Groups[0]
is always the same asmatch.Value
, which is the entire match.match.Groups[1]
is the first capturing group in your regular expression.
Consider this example:
var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
In this case,
match.Value
is"[john] John Johnson"
match.Groups[0]
is always the same asmatch.Value
,"[john] John Johnson"
.match.Groups[1]
is the group of captures from the(.*?)
.match.Groups[2]
is the group of captures from the(.*)
.match.Groups[1].Captures
is yet another dimension.
Consider another example:
var pattern = @"(\[.*?\])+";
var match = Regex.Match("[john][johnny]", pattern);
Note that we are looking for one or more bracketed names in a row. You need to be able to get each name separately. Enter Captures
!
match.Groups[0]
is always the same asmatch.Value
,"[john][johnny]"
.match.Groups[1]
is the group of captures from the(\[.*?\])+
. The same asmatch.Value
in this case.match.Groups[1].Captures[0]
is the same asmatch.Groups[1].Value
match.Groups[1].Captures[1]
is[john]
match.Groups[1].Captures[2]
is[johnny]