Regex.GetGroupNames Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает массив имен группы записи для регулярного выражения.
public:
cli::array <System::String ^> ^ GetGroupNames();
public string[] GetGroupNames ();
member this.GetGroupNames : unit -> string[]
Public Function GetGroupNames () As String()
Возвращаемое значение
- String[]
Строковый массив имен группы.
Примеры
В следующем примере определяется метод общего назначения ShowMatches
, отображающий имена групп регулярных выражений и соответствующий текст.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})";
string input = "The cow jumped over the moon.";
Regex rgx = new Regex(pattern);
Match match = rgx.Match(input);
if (match.Success)
ShowMatches(rgx, match);
}
private static void ShowMatches(Regex r, Match m)
{
string[] names = r.GetGroupNames();
Console.WriteLine("Named Groups:");
foreach (var name in names) {
Group grp = m.Groups[name];
Console.WriteLine(" {0}: '{1}'", name, grp.Value);
}
}
}
// The example displays the following output:
// Named Groups:
// 0: 'The cow jumped over the moon.'
// 1: 'the '
// 2: 'the'
// FirstWord: 'The'
// LastWord: 'moon'
// Punctuation: '.'
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})"
Dim input As String = "The cow jumped over the moon."
Dim rgx As New Regex(pattern)
Dim match As Match = rgx.Match(input)
If match.Success Then ShowMatches(rgx, match)
End Sub
Private Sub ShowMatches(r As Regex, m As Match)
Dim names() As String = r.GetGroupNames()
Console.WriteLine("Named Groups:")
For Each name In names
Dim grp As Group = m.Groups.Item(name)
Console.WriteLine(" {0}: '{1}'", name, grp.Value)
Next
End Sub
End Module
' The example displays the following output:
' Named Groups:
' 0: 'The cow jumped over the moon.'
' 1: 'the '
' 2: 'the'
' FirstWord: 'The'
' LastWord: 'moon'
' Punctuation: '.'
В этом случае шаблон \b(?<FirstWord>\w+)\s?((\w+)\s)*(?<LastWord>\w+)?(?<Punctuation>\p{Po})
регулярного выражения предназначен для анализа простого предложения, а также для определения первого слова, последнего слова и конечной знак препинания. В следующей таблице показано, как интерпретируется шаблон регулярного выражения:
Шаблон | Описание |
---|---|
\b |
Совпадение должно начинаться на границе слова. |
(?<FirstWord>\w+) |
Совпадение с одним или несколькими символами слова. Это FirstWord именованной группы. |
\s? | Совпадение с нулем или одним символом пробела. |
(\w+) | Совпадение с одним или несколькими символами слова. Это вторая группа записи. |
\s | Соответствует пробелу. |
((\w+)\s)* | Соответствует нулю или нескольким вхождениям одного или нескольких символов слов, за которым следует пробел. Это первая группа записи. |
(?<LastWord> \w+)? | Совпадение с нулевым или одним вхождением одного или нескольких символов слова. Это LastWord именованной группы. |
(?<Punctuation> \p{Po}) | Соответствует символу, категория Юникода которого — знак препинания, Other. Это Punctuation именованной группы. |
Комментарии
Коллекция имен групп содержит набор строк, используемых для записи групп в выражении. Даже если записи групп не именуются явным образом, они автоматически присваиваются числовые имена ("0", "1", "2", "3" и т. д.). Именованной группы "0" представляет весь текст, соответствующий шаблону регулярного выражения. Нумерованные группы предшествуют явно именованным группам в коллекции, а именованные группы отображаются в порядке, в котором они определены в шаблоне регулярного выражения.
Свойство массива, возвращаемого этим методом, можно использовать Length для определения количества групп в регулярном выражении.