Сведения о вопросе

None

16:54, 23rd August, 2020

Теги

.net   regex    

В чем разница между группой и матчем внутри .NET - это RegEx?

Просмотров: 497   Ответов: 2

В чем разница между группой и матчем внутри .NET - это RegEx?



  Сведения об ответе

repe

21:06, 1st October, 2020

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

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

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


  Сведения об ответе

screen

07:23, 24th August, 2020

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

Внутри соответствия можно определить группы, анонимные или именованные, чтобы упростить разделение соответствия. Простой пример-создать regex для поиска URLs, а затем использовать группы внутри, чтобы найти протокол (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(string text), вы получите несколько совпадений, каждое из которых состоит из нуля, одной или нескольких групп.

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться