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

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


GroupCollection.Item[] Свойство

Определение

Позволяет осуществлять доступ к отдельному элементу коллекции с помощью целочисленного или строкового индекса.

Перегрузки

Item[Int32]

Включает доступ к члену коллекции с помощью целочисленного индекса.

Item[String]

Включает доступ к члену коллекции с помощью строкового индекса.

Item[Int32]

Исходный код:
GroupCollection.cs
Исходный код:
GroupCollection.cs
Исходный код:
GroupCollection.cs

Включает доступ к члену коллекции с помощью целочисленного индекса.

C#
public System.Text.RegularExpressions.Group this[int groupnum] { get; }

Параметры

groupnum
Int32

Отсчитываемый от нуля индекс извлекаемого элемента коллекции.

Значение свойства

Элемент коллекции, заданный параметром groupnum.

Реализации

Примеры

В следующем примере определяется регулярное выражение, состоящее из двух нумеруемых групп. Первая группа записывает одну или несколько последовательных цифр. Вторая группа соответствует одному символу. Так как обработчик регулярных выражений ищет ноль или одно вхождение первой группы, он не всегда находит совпадение, даже если совпадение регулярного выражения выполнено успешно. Затем в примере показан результат, когда Item[Int32] свойство используется для получения несопоставьтеемую группу, соответствующую группу и группу, которая не определена в регулярном выражении. В примере определяется шаблон (\d+)*(\w)\2регулярного выражения , который интерпретируется, как показано в следующей таблице.

Шаблон Описание
(\d+)* Совпадение с одним или несколькими вхождениями десятичной цифры. Это первая группа записи. Соответствует этому шаблону либо ноль, либо один раз.
(\w) Это вторая группа записи.
\k Соответствует строке, записанной второй группой захвата.
C#
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"(\d+)*(\w)\2";
      string input = "AA";
      Match match = Regex.Match(input, pattern);
      
      // Get the first named group.
      Group group1 = match.Groups[1];
      Console.WriteLine("Group 1 value: {0}", group1.Success ? group1.Value : "Empty");
      
      // Get the second named group.
      Group group2 = match.Groups[2];
      Console.WriteLine("Group 2 value: {0}", group2.Success ? group2.Value : "Empty");
      
      // Get a non-existent group.
      Group group3 = match.Groups[3];
      Console.WriteLine("Group 3 value: {0}", group3.Success ? group3.Value : "Empty");
   }
}
// The example displays the following output:
//       Group 1 value: Empty
//       Group 2 value: A
//       Group 3 value: Empty

Комментарии

Свойство Item[Int32] является индексом (в C#) или свойством по умолчанию (в Visual Basic) GroupCollection класса . Он позволяет перечислять члены коллекции с помощью foreach оператора в C# или For Each оператора в Visual Basic.

Это свойство также можно использовать для получения отдельных отслеживаемых групп по номеру индекса. Вы можете получить массив, содержащий числа всех записываемых групп в регулярном выражении, вызвав метод экземпляра Regex.GetGroupNumbers . Вы также можете сопоставить именованные группы захвата с их номерами, вызвав метод экземпляра Regex.GroupNumberFromName .

Количество элементов в коллекции можно определить, извлекая значение Count свойства . Допустимые значения параметра в диапазоне groupnum от 0 до единицы меньше числа элементов в коллекции.

Объект GroupCollection , возвращаемый свойством , Match.Groups всегда имеет по крайней мере один член. Если подсистеме регулярных выражений не удается найти совпадения в определенной входной строке, для отдельного Group объекта в коллекции задано Group.Success значение false , а Group.Value свойству — значение String.Empty.

Если groupnum не является индексом члена коллекции или является groupnum индексом захватываемой группы, которая не была сопоставлена во входной строке, метод возвращает Group объект, свойство которого Group.Success имеет значение false , а свойство — Group.ValueString.Empty.

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

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

.NET 10 и другие версии
Продукт Версии
.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

Item[String]

Исходный код:
GroupCollection.cs
Исходный код:
GroupCollection.cs
Исходный код:
GroupCollection.cs

Включает доступ к члену коллекции с помощью строкового индекса.

C#
public System.Text.RegularExpressions.Group this[string groupname] { get; }

Параметры

groupname
String

Имя группы записи.

Значение свойства

Элемент коллекции, заданный параметром groupname.

Реализации

Примеры

В следующем примере определяется регулярное выражение, состоящее из двух именованных групп. Первая группа, , numbersзахватывает одну или несколько последовательных цифр. Вторая группа, letter, соответствует одному символу. Так как подсистема регулярных выражений ищет ноль или одно вхождение шаблона, определенного numbers группой, numbers группа не всегда присутствует, даже если совпадение выполнено успешно. Затем в примере показан результат, когда Item[String] свойство используется для получения несопоставьтеемую группу, соответствующую группу и группу, которая не определена в регулярном выражении. В примере определяется шаблон (?<numbers>\d+)*(?<letter>\w)\k<letter>регулярного выражения , который интерпретируется, как показано в следующей таблице.

Шаблон Описание
(?<numbers>\d+)* Совпадение с одним или несколькими вхождениями десятичной цифры. Назовите эту группу numbers записи. Соответствует этому шаблону либо ноль, либо один раз.
(?<letter>\w) Совпадение с одним словом. Назовите эту группу letter записи.
\k<letter> Соответствует строке, записанной захватываемой letter группой.
C#
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"(?<numbers>\d+)*(?<letter>\w)\k<letter>";
      string input = "AA";
      Match match = Regex.Match(input, pattern);
      
      // Get the first named group.
      Group group1 = match.Groups["numbers"];
      Console.WriteLine("Group 'numbers' value: {0}", group1.Success ? group1.Value : "Empty");
      
      // Get the second named group.
      Group group2 = match.Groups["letter"];
      Console.WriteLine("Group 'letter' value: {0}", group2.Success ? group2.Value : "Empty");
      
      // Get a non-existent group.
      Group group3 = match.Groups["none"];
      Console.WriteLine("Group 'none' value: {0}", group3.Success ? group3.Value : "Empty");
   }
}
// The example displays the following output:
//       Group 'numbers' value: Empty
//       Group 'letter' value: A
//       Group 'none' value: Empty

Комментарии

groupName Может быть либо именем захватываемой группы, определенной элементом (?<name>) в регулярном выражении, либо строковым представлением числа захватываемой группы, определенной конструкцией группирования. Дополнительные сведения о группах в регулярных выражениях см. в разделе Конструкции группирования.

Имена всех захваченных групп в объекте Regex можно получить, вызвав Regex.GetGroupNames метод . Вы также можете сопоставить числа записываемых групп в регулярном выражении с их именами, вызвав Regex.GroupNameFromNumber метод . Затем отдельные имена из массива можно передать в Item[String] свойство , чтобы получить записанную строку.

Если groupname не является именем захватываемой группы в коллекции или groupname именем захватываемой группы, которая не была сопоставлена во входной строке, метод возвращает Group объект, свойство которого Group.Success имеет значение false , а свойство — Group.ValueString.Empty.

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

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

.NET 10 и другие версии
Продукт Версии
.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