Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
667 of 1492 menu
◀ ▶

ExplicitCapture

При RegexOptions.ExplicitCapture круглые скобки ( ) не создают нумерованную группу. Именованный захват (?<name>...) по-прежнему работает. Удобно, когда скобки нужны только для приоритета, а не для Groups.

Синтаксис

new Regex(@"(?<g>abc)", RegexOptions.ExplicitCapture);

Пример

Давайте проверить, что (abc) не даёт группу 1:

using System; using System.Text.RegularExpressions; class Program { static void Main() { var m = Regex.Match("abcde", @"(abc)", RegexOptions.ExplicitCapture); Console.WriteLine(m.Groups.Count); } }

Результат выполнения кода:

1

Пример

Давайте прочитать именованную группу (?<g>abc):

using System; using System.Text.RegularExpressions; class Program { static void Main() { var m = Regex.Match("abcde", @"(?<g>abc)", RegexOptions.ExplicitCapture); Console.WriteLine(m.Groups["g"].Value); } }

Результат выполнения кода:

"abc"

Пример

Давайте сравнить без флага - группа 1 появится:

using System; using System.Text.RegularExpressions; class Program { static void Main() { var m = Regex.Match("abcde", @"(abc)"); Console.WriteLine(m.Groups[1].Value); } }

Результат выполнения кода:

"abc"

Смотрите также

  • перечисление RegexOptions,
    куда входит ExplicitCapture
  • класс Regex,
    которому передают флаги
  • якорь anchor,
    который ведёт себя иначе при Multiline
  • символ any,
    который с точкой связан Singleline
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить