Соответствие - это часть строки, которая соответствует регулярному выражению, и поэтому в строке может быть несколько совпадений.
Внутри совпадения вы можете определить группы, анонимные или именованные, чтобы упростить разбиение совпадения. Простой пример - создать регулярное выражение для поиска 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;
Чтобы сделать вещи еще более интересными, одну группу можно сопоставить несколько раз, но тогда я рекомендую начать читать документацию .
Вы также можете использовать группы для генерации обратных ссылок, а также для частичного поиска и замены, но об этом читайте в MSDN .