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

取得するコレクション メンバーの 0 から始まるインデックス。

プロパティ値

groupnum で指定されたコレクションのメンバー。

実装

次の例では、2 つの番号付きグループで構成される正規表現を定義します。 最初のグループは、1 つ以上の連続した数字をキャプチャします。 2 番目のグループは 1 文字に一致します。 正規表現エンジンは最初のグループの 0 回または 1 回の出現を検索するため、正規表現の一致が成功した場合でも、必ずしも一致が見つかるとは限りません。 次に、一致しないグループ、一致するグループ、および正規表現で定義されていないグループを取得するために プロパティを使用した場合 Item[Int32] の結果を示します。 この例では、次の表に示すように解釈される正規表現パターン (\d+)*(\w)\2を定義します。

パターン 説明
(\d+)* 10 進数の 1 つ以上の出現箇所と一致します。 これが最初のキャプチャ グループです。 このパターンを 0 回または 1 回一致させます。
(\w) これが 2 番目のキャプチャ グループです。
\k 2 番目のキャプチャ グループによってキャプチャされた文字列と一致します。
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#) または既定の GroupCollection プロパティ (Visual Basic の場合) です。 これにより、C# の ステートメントまたは Visual Basic の ステートメントを foreach 使用して、コレクションのメンバーを For Each 列挙できます。

このプロパティを使用して、個々のキャプチャされたグループをインデックス番号で取得することもできます。 インスタンス Regex.GetGroupNumbers メソッドを呼び出すことで、正規表現内のすべてのキャプチャ グループの数を含む配列を取得できます。 インスタンス Regex.GroupNumberFromName メソッドを呼び出して、名前付きキャプチャ グループを番号にマップすることもできます。

プロパティの値を取得することで、コレクション内の項目の数を Count 確認できます。 パラメーターの有効な値の範囲は groupnum 、0 からコレクション内の項目数より 1 未満です。

プロパティによって返されるオブジェクトには GroupCollection 、常に Match.Groups 少なくとも 1 つのメンバーが含まれます。 正規表現エンジンで特定の入力文字列内の一致が見つからない場合、コレクション内の単一Groupオブジェクトのプロパティは にfalse設定され、そのGroup.Valueプロパティは Group.SuccessString.Empty設定されます。

がコレクションのメンバーのインデックスではない場合groupnum、または が入力文字列内で一致していないキャプチャ グループのインデックスである場合groupnum、メソッドは プロパティが でありfalse、 プロパティが であるString.EmptyオブジェクトGroup.SuccessGroup.ValueGroupします。

こちらもご覧ください

適用対象

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 で指定されたコレクションのメンバー。

実装

次の例では、2 つの名前付きグループで構成される正規表現を定義します。 最初のグループ である は、 numbers1 つ以上の連続した数字をキャプチャします。 2 番目のグループ である は、 letter1 文字に一致します。 正規表現エンジンは、グループによって定義されたパターンの 0 回または 1 回の出現を numbers 検索するため、 numbers 一致が成功した場合でも、グループが常に存在するとは限りません。 次に、一致しないグループ、一致するグループ、および正規表現で定義されていないグループを取得するために プロパティを使用した場合 Item[String] の結果を示します。 この例では、次の表に示すように解釈される正規表現パターン (?<numbers>\d+)*(?<letter>\w)\k<letter>を定義します。

パターン 説明
(?<numbers>\d+)* 10 進数の 1 つ以上の出現箇所と一致します。 このグループにキャプチャ グループという numbers 名前を付けます。 このパターンを 0 回または 1 回一致させます。
(?<letter>\w) 1 つの単語文字と一致します。 このグループにキャプチャ グループという 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 名前を Regex.GetGroupNames 取得できます。 また、 メソッドを呼び出して、正規表現内のキャプチャ グループの数を名前に Regex.GroupNameFromNumber マップすることもできます。 その後、配列の個々の名前を プロパティに渡して Item[String] 、キャプチャされた文字列を取得できます。

groupnameがコレクション内のキャプチャ グループの名前ではない場合、または が入力文字列で一致していないキャプチャ グループの名前である場合groupname、メソッドは プロパティが false で、プロパティが であるString.EmptyオブジェクトGroup.SuccessGroup.ValueGroupします。

こちらもご覧ください

適用対象