Regex.GetGroupNumbers Метод

Определение

Возвращает массив номеров групп записи, что соответствует именам групп в массиве.

C#
public int[] GetGroupNumbers ();

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

Int32[]

Целочисленный массив номеров групп.

Примеры

В следующем примере определяется регулярное выражение, \b((?<word>\w+)\s*)+(?<end>[.?!])соответствующее предложению. Регулярное выражение включает три группы записи: неименованная группа, которая захватывает отдельное слово вместе с пробелом, который может следовать за ним; группа с именем word , которая фиксирует отдельные слова в предложении; и группа с именем end , которая фиксирует знак препинания, заканчивающий предложение. В этом примере вызывается GetGroupNumbers метод для получения чисел всех захватываемых групп, а затем отображается их захваченная строка. Кроме того, метод используется для указания того, GroupNameFromNumber соответствует ли определенная нумерованная группа именованной группе.

C#
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b((?<word>\w+)\s*)+(?<end>[.?!])";
      string input = "This is a sentence. This is a second sentence.";
      
      Regex rgx = new Regex(pattern);
      int[] groupNumbers = rgx.GetGroupNumbers();
      Match m = rgx.Match(input);
      if (m.Success) {
         Console.WriteLine("Match: {0}", m.Value);
         foreach (var groupNumber in groupNumbers) {
            string name = rgx.GroupNameFromNumber(groupNumber);
            int number;
            Console.WriteLine("   Group {0}{1}: '{2}'", 
                              groupNumber, 
                              ! string.IsNullOrEmpty(name) & 
                              ! Int32.TryParse(name, out number) ?
                                 " (" + name + ")" : String.Empty, 
                              m.Groups[groupNumber].Value);
         }
      } 
   }
}
// The example displays the following output:
//       Match: This is a sentence.
//          Group 0: 'This is a sentence.'
//          Group 1: 'sentence'
//          Group 2 (word): 'sentence'
//          Group 3 (end): '.'

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

Шаблон Описание
\b Совпадение должно начинаться на границе слова.
(?<word>\w+) Сопоставление одного или нескольких символов слов и назначение сопоставленных строк группе с именем word.
\s* Соответствует нулю или нескольким символам пробела.
((?<word>\w+)\s*) Назначьте захваченную группу word , за которой следуют все захваченные символы пробелов первой захваченной группе.
((?<word>\w+)\s*)+ Соответствует шаблону одного или нескольких символов слова, за которым следует любой пробел один или несколько раз.
(?<end>[.?!]) Совпадение с точкой, вопросительным знаком или восклицательным знаком. Назначьте соответствующий символ захватываемой end группе.

Комментарии

Доступ к неименованным и именованным группам записи можно получить по номеру. Неименованные группы нумеруются слева направо, начиная с 1. (Захватываемая группа в индексе 0 (ноль) представляет соответствие в целом.) Затем именованные группы нумеруются слева направо, начиная с числа, превышающего число неименованных групп записи.

Ссылка на группу по его числу вместо имени строки может обеспечить более быстрый доступ.

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

Продукт Версии
.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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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