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})?)
В следующей таблице показано, как интерпретируется шаблон регулярного выражения.
Шаблон | Описание |
---|---|
(?<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 .