GroupCollection.Item[] プロパティ

定義

整数インデックスまたは文字列インデックスによってコレクションの単一のメンバーにアクセスできるようになります。

オーバーロード

Item[Int32]

整数インデックスによってコレクションのメンバーにアクセスできるようにします。

Item[String]

文字列インデックスによってコレクションのメンバーにアクセスできるようにします。

Item[Int32]

整数インデックスによってコレクションのメンバーにアクセスできるようにします。

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 から始まるインデックス。

プロパティ値

Group

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# の場合) または既定のプロパティ (Visual Basic) です GroupCollectionforeachC# のステートメントまたは Visual Basic のステートメントを使用して、コレクションのメンバーを列挙でき For Each ます。

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

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

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

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

こちらもご覧ください

適用対象

Item[String]

文字列インデックスによってコレクションのメンバーにアクセスできるようにします。

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

キャプチャ グループの名前。

プロパティ値

Group

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

実装

次の例では、2 つの名前付きグループで構成される正規表現を定義します。 最初のグループ は numbers 、1 つ以上の連続する数字をキャプチャします。 2 番目のグループ letter は、1 文字に一致します。 正規表現エンジンは、グループによって定義されたパターンの 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 Group Group.Success false Group.Value します String.Empty

こちらもご覧ください

適用対象