Каково различие между группой и соответствием в RegEx.NET?

Отключение Instant Run в Android Studio 2.2 с плагином Gradle 2.2.2 исправлено для меня. Переход на более раннюю версию плагина Gradle (например, 2.2.0) также исправил его, но это менее желательно imho.

6
задан Charles Menguy 26 April 2012 в 00:35
поделиться

2 ответа

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

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

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

7
ответ дан 10 December 2019 в 02:56
поделиться

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

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

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

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

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

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

2
ответ дан 10 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: