GroupCollection.Item[] 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
允许通过整数索引或字符串索引访问集合的单个成员。
重载
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.Empty。Group.Success
如果 groupnum
不是集合成员的索引,或者如果 groupnum
是输入字符串中未匹配的捕获组的索引,则方法返回其 GroupGroup.Success 属性为 false
且 Group.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 属性为 false
且 Group.Value
其属性为 String.Empty的对象Group.Success。