В чем разница между группой и совпадением в .Регулярное выражение NET?

StackOverflow https://stackoverflow.com/questions/29088

  •  09-06-2019
  •  | 
  •  

Вопрос

В чем разница между Группа и еще Совпадение в .Регулярное выражение СЕТИ?

Это было полезно?

Решение

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

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

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

Другие советы

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

Внутри совпадения вы можете определить группы, как анонимные, так и именованные, чтобы упростить разделение совпадения.Простой пример - создать регулярное выражение для поиска 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>/[^?])"

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

Эти именованные группы можно найти либо путем индексации по номеру, либо с помощью строки.Приведенный выше пример можно использовать следующим образом:

Match match = pattern.Match(urls);
if (!match.Success) 
    continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top