GroupCollection.Item[] 属性

定义

允许通过整数索引或字符串索引访问集合的单个成员。

重载

Item[Int32]

允许通过整数索引访问集合成员。

Item[String]

允许通过字符串索引访问集合成员。

Item[Int32]

Source:
GroupCollection.cs
Source:
GroupCollection.cs
Source:
GroupCollection.cs

允许通过整数索引访问集合成员。

public:
 property System::Text::RegularExpressions::Group ^ default[int] { System::Text::RegularExpressions::Group ^ get(int groupnum); };
public System.Text.RegularExpressions.Group this[int groupnum] { get; }
member this.Item(int) : System.Text.RegularExpressions.Group
Default Public ReadOnly Property Item(groupnum As Integer) As Group

参数

groupnum
Int32

要检索的集合成员的索引(从零开始)。

属性值

groupnum 指定的集合的成员。

实现

示例

以下示例定义由两个编号组组成的正则表达式。 第一组捕获一个或多个连续数字。 第二个组匹配单个字符。 由于正则表达式引擎查找第一个组的零个或一个匹配项,因此即使正则表达式匹配成功,也不会始终找到匹配项。 然后,当 使用 属性检索不匹配的组、匹配的组和未在正则表达式中定义的组时 Item[Int32] ,该示例将说明结果。 该示例定义正则表达式模式 (\d+)*(\w)\2,如下表所示。

模式 描述
(\d+)* 匹配十进制数字的一个或多个匹配项。 这是第一个捕获组。 匹配此模式,可以是零次还是一次。
(\w) 这是第二个捕获组。
\k 匹配第二个捕获组捕获的字符串。
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
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(\d+)*(\w)\2"
      Dim input As String = "AA"
      Dim match As Match = Regex.Match(input, pattern)
      
      ' Get the first named group.
      Dim group1 As Group = match.Groups.Item(1)
      Console.WriteLine("Group 1 value: {0}", If(group1.Success, group1.Value, "Empty"))
      
      ' Get the second named group.
      Dim group2 As Group = match.Groups.Item(2)
      Console.WriteLine("Group 2 value: {0}", If(group2.Success, group2.Value, "Empty"))
      
      ' Get a non-existent group.
      Dim group3 As Group = match.Groups.Item(3)
      Console.WriteLine("Group 3 value: {0}", If(group3.Success, group3.Value, "Empty"))
   End Sub
End Module
' 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 到小于集合中项数的 1。

GroupCollection属性返回Match.Groups的对象始终至少具有一个成员。 如果正则表达式引擎在特定输入字符串中找不到任何匹配项,则集合中的单个Group对象的 属性设置为 false ,其 Group.Value 属性设置为 String.EmptyGroup.Success

如果 groupnum 不是集合成员的索引,或者如果 groupnum 是输入字符串中未匹配的捕获组的索引,则方法返回其 GroupGroup.Success 属性为 falseGroup.Value 其属性为 String.Empty的对象。

另请参阅

适用于

Item[String]

Source:
GroupCollection.cs
Source:
GroupCollection.cs
Source:
GroupCollection.cs

允许通过字符串索引访问集合成员。

public:
 property System::Text::RegularExpressions::Group ^ default[System::String ^] { System::Text::RegularExpressions::Group ^ get(System::String ^ groupname); };
public System.Text.RegularExpressions.Group this[string groupname] { get; }
member this.Item(string) : System.Text.RegularExpressions.Group
Default Public ReadOnly Property Item(groupname As String) As Group

参数

groupname
String

捕获组的名称。

属性值

groupname 指定的集合的成员。

实现

示例

以下示例定义由两个命名组组成的正则表达式。 第一个组 numbers捕获一个或多个连续数字。 第二个组 letter匹配单个字符。 由于正则表达式引擎查找组 numbers 定义的模式的零个或一个匹配项, numbers 因此即使匹配成功,该组也并非始终存在。 然后,当 使用 属性检索不匹配的组、匹配的组和未在正则表达式中定义的组时 Item[String] ,该示例将说明结果。 该示例定义正则表达式模式 (?<numbers>\d+)*(?<letter>\w)\k<letter>,如下表所示。

模式 描述
(?<numbers>\d+)* 匹配十进制数字的一个或多个匹配项。 将此名称命名为 numbers 捕获组。 匹配此模式,可以是零次还是一次。
(?<letter>\w) 匹配单个单词字符。 将此名称命名为 letter 捕获组。
\k<letter> 匹配捕获组捕获的 letter 字符串。
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
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "(?<numbers>\d+)*(?<letter>\w)\k<letter>"
      Dim input As String = "AA"
      Dim match As Match = Regex.Match(input, pattern)
      
      ' Get the first named group.
      Dim group1 As Group = match.Groups.Item("numbers")
      Console.WriteLine("Group 'numbers' value: {0}", If(group1.Success, group1.Value, "Empty"))
      
      ' Get the second named group.
      Dim group2 As Group = match.Groups.Item("letter")
      Console.WriteLine("Group 'letter' value: {0}", If(group2.Success, group2.Value, "Empty"))
      
      ' Get a non-existent group.
      Dim group3 As Group = match.Groups.Item("none")
      Console.WriteLine("Group 'none' value: {0}", If(group3.Success, group3.Value, "Empty"))
   End Sub
End Module
' The example displays the following output:
'       Group 'numbers' value: Empty
'       Group 'letter' value: A
'       Group 'none' value: Empty

注解

groupName可以是正(?<则表达式中 name>) 元素定义的捕获组的名称,也可以是由分组构造定义的捕获组编号的字符串表示形式。 有关正则表达式中的组的详细信息,请参阅 分组构造

可以通过调用 Regex.GetGroupNames 方法检索 对象中Regex所有捕获组的名称。 还可以通过调用 Regex.GroupNameFromNumber 方法,将正则表达式中捕获组的数量映射到其名称。 然后,可以将数组中的单个名称传递给 属性以 Item[String] 检索捕获的字符串。

如果 groupname 不是集合中捕获组的名称,或者如果 groupname 是输入字符串中未匹配的捕获组的名称,则该方法返回其 Group 属性为 falseGroup.Value 其属性为 String.Empty的对象Group.Success

另请参阅

适用于