Прочитать на английском

Поделиться через


Regex.GroupNameFromNumber(Int32) Метод

Определение

Получает имя группы, соответствующее указанному номеру группы.

public string GroupNameFromNumber(int i);

Параметры

i
Int32

Номер группы для преобразования в соответствующее имя группы.

Возвращаемое значение

Строка, содержащая имя группы, связанное с указанным номером группы. При отсутствии имени группы, соответствующей параметру i, метод возвращает значение Empty.

Примеры

В следующем примере определяется шаблон регулярного выражения, соответствующий строке адреса, содержащей название города, название штата и почтовый индекс в США. В примере используется GroupNameFromNumber метод для получения имен записываемых групп. Затем они используются для получения соответствующих отслеживаемых групп для совпадений.

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)";
      string[] cityLines = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", 
                            "San Francisco, CA 94109", "Seattle, WA 98109" };
      Regex rgx = new Regex(pattern);
      List<string> names = new List<string>();
      int ctr = 1;
      bool exitFlag = false;
      // Get group names.
      do {
         string name = rgx.GroupNameFromNumber(ctr);
         if (!String.IsNullOrEmpty(name))
         {
            ctr++;
            names.Add(name);
         }
         else
         {
            exitFlag = true;
         }
      } while (!exitFlag);

      foreach (string cityLine in cityLines)
      {
         Match match = rgx.Match(cityLine);
         if (match.Success)
            Console.WriteLine("Zip code {0} is in {1}, {2}.", 
                               match.Groups[names[3]], 
                               match.Groups[names[1]], 
                               match.Groups[names[2]]);
      } 
   }
}
// The example displays the following output:
//       Zip code 10003 is in New York, NY.
//       Zip code 11238 is in Brooklyn, NY.
//       Zip code 48204 is in Detroit, MI.
//       Zip code 94109 is in San Francisco, CA.
//       Zip code 98109 is in Seattle, WA.

Шаблон регулярного выражения определяется следующим выражением:

(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)

В следующей таблице показано, как интерпретируется шаблон регулярного выражения.

Шаблон Описание
(?<city>[A-Za-z\s]+) Совпадение с одним или несколькими буквами или пробелами. Присвойте этой захватываемой группе имя city.
, Сопоставить запятую (,), за которой следует пробел.
(?<state>[A-Za-z]{2}) Соответствует двум буквенным символам. Присвойте этой захватываемой группе имя state. За этой группой должен следовать символ пробела.
(?<zip>\d{5}(-\d{4})?) Совпадение с пятью числовыми цифрами, за которыми следует либо ноль, либо одно вхождение дефиса с четырьмя цифрами. Присвойте этой захватываемой группе имя zip.

Комментарии

Шаблон регулярного выражения может содержать именованные или нумерованные захватываемые группы, которые разграничивать части выражений в совпадении шаблонов. Нумерованные группы разделяются синтаксисом (subexpression) и присваиваются номера на основе их порядка в регулярном выражении. Именованные группы разделяются синтаксисом (?<Имя>subexpression) или (?' name'subexpression), где name — это имя, по которому будет идентифицироваться часть выражения. (Дополнительные сведения см. в разделе Конструкции группирования.) Метод GroupNameFromNumber определяет как именованные группы, так и нумерованные группы по их порядковой позиции в регулярном выражении. Нулевая порядковая позиция всегда представляет все регулярное выражение. Затем все нумерованные группы учитываются перед именованными группами, независимо от их фактического положения в шаблоне регулярного выражения.

Если i — номер именованной группы, метод возвращает имя группы. Если i является номером неименованной группы, метод возвращает строковое представление числа. Например, если i имеет значение 1, метод возвращает "1". Если i не является номером захватываемой группы, метод возвращает String.Empty.

При обнаружении совпадения с шаблоном значение, возвращаемое этим методом, можно использовать для извлечения Group объекта, представляющего захваченную группу GroupCollection.Item[] из свойства . Объект GroupCollection возвращается свойством Match.Groups .

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел