次の方法で共有


GroupCollection.Item[] プロパティ

定義

整数または文字列インデックスを使用して、コレクションの 1 つのメンバーにアクセスできるようにします。

オーバーロード

名前 説明
Item[Int32]

整数インデックスによるコレクションのメンバーへのアクセスを有効にします。

Item[String]

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

Item[Int32]

ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
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] プロパティは、GroupCollection クラスのインデックス (C# の場合) または既定のプロパティ (Visual Basic の場合) です。 これにより、C# の foreach ステートメントまたは Visual Basic の For Each ステートメントを使用して、コレクションのメンバーを列挙できます。

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

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

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

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

こちらもご覧ください

適用対象

Item[String]

ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
GroupCollection.cs
ソース:
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 つの名前付きグループで構成される正規表現を定義します。 最初のグループ ( numbers) は、1 つ以上の連続する数字をキャプチャします。 2 番目のグループ ( letter) は、1 文字に一致します。 正規表現エンジンは、 numbers グループによって定義されたパターンの 0 回または 1 回の出現を検索するため、一致が成功した場合でも、 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.GetGroupNames メソッドを呼び出すことで、Regex オブジェクト内のすべてのキャプチャされたグループの名前を取得できます。 Regex.GroupNameFromNumber メソッドを呼び出すことで、正規表現内のキャプチャ グループの数を名前にマップすることもできます。 その後、配列の個々の名前を Item[String] プロパティに渡して、キャプチャされた文字列を取得できます。

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

こちらもご覧ください

適用対象