2008-08-26 6 views

ответ

6

A Match - это объект, который указывает конкретное регулярное выражение, соответствующее (часть) целевого текста. A Group указывает часть соответствия, если исходное регулярное выражение содержит групповые маркеры (в основном шаблон в круглых скобках). Например, с помощью следующего кода:

string text = "One car red car blue car"; 
string pat = @"(\w+)\s+(car)"; 
Match m = r.Match(text); 

m будет объектом матча, который содержит две группы - группа 1, от (\w+), и что захваченных «один», и 2-й группы (от (car)), который соответствовал, хорошо, "автомобиль".

2

Матч - это часть строки, которая соответствует регулярному выражению, и поэтому может быть несколько совпадений внутри строки.

Внутри матча вы можете определить группы, анонимные или именованные, чтобы было легче разделить матч. Простой пример - создать регулярное выражение для поиска URL-адресов, а затем использовать группы внутри, чтобы найти протокол (http), домен (www.web.com), path (/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; 

Чтобы сделать вещи еще более интересным, одна группа может быть сопоставлен несколько раз, но я рекомендую начать читать documentation.

Вы также можете использовать группы для создания обратных ссылок, а также выполнять частичный поиск и замену, но читайте больше об этом на MSDN.

Смежные вопросы