Regex.GroupNameFromNumber(Int32) Метод

Определение

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

public:
 System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber(int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String

Параметры

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.
Imports System.Collections.Generic
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)"
      Dim cityLines() As String = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", _
                                   "San Francisco, CA 94109", "Seattle, WA 98109" }
      Dim rgx As New Regex(pattern)
      Dim names As New List(Of String)      
      Dim ctr As Integer = 1
      Dim exitFlag As Boolean = False
      ' Get group names.
      Do 
         Dim name As String = rgx.GroupNameFromNumber(ctr)
         If Not String.IsNullOrEmpty(name) Then
            ctr += 1
            names.Add(name)
         Else
            exitFlag = True
         End If
      Loop While Not exitFlag
      
      For Each cityLine As String In cityLines
         Dim match As Match = rgx.Match(cityLine)
         If match.Success Then
            Console.WriteLine("Zip code {0} is in {1}, {2}.", _
                               match.Groups.Item(names.Item(3)), _
                               match.Groups.Item(names.Item(1)), _
                               match.Groups.Item(names.Item(2)))
         End If   
      Next 
   End Sub
End Module
' 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})?)

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

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

Комментарии

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

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

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

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

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