This class is a collection of the captured groups in a regular expression. A GroupCollection is indexed by either a string with the name of the capture group, or with an integer number of the capture group as determined in the regular expression (give a name to a capture group by putting ?<name> immediately after the opening parenthesis). So, Match.Groups["name"] would retrieve a capture from the subexpression (?<name>expr) , and Match.Groups[1] would be the result from the first explicitly grouped subexpression. The entire regular expression is the zero-indexed group (an expression without any groupings is treated as a single group). A GroupCollection is returned by Match.Groups . public class GroupCollection : ICollection, IEnumerable { // Public Instance Properties public int Count {get; } // implements ICollection public bool IsReadOnly {get; } public bool IsSynchronized {get; } // implements ICollection public object SyncRoot {get; } // implements ICollection public Group this [string groupname ]{get; } public Group this [int groupnum ]{get; } // Public Instance Methods public void CopyTo (Array array , int arrayIndex ); // implements ICollection public IEnumerator GetEnumerator ( ); // implements IEnumerable } Returned ByMatch.Groups |