Match クラス

定義

1 回の正規表現検索に一致した結果を表します。

public ref class Match : System::Text::RegularExpressions::Group
public class Match : System.Text.RegularExpressions.Group
[System.Serializable]
public class Match : System.Text.RegularExpressions.Group
type Match = class
    inherit Group
[<System.Serializable>]
type Match = class
    inherit Group
Public Class Match
Inherits Group
継承
属性

次の例では、正規表現を使用し Console\.Write(Line)? ます。 この正規表現パターンは、次のように解釈されます。

コンソール \ 。企画 文字列 "Console.Write" と一致します。 "." 文字はエスケープされ、任意の文字と一致するワイルドカードとしてではなく、リテラル期間として解釈されることに注意してください。
(行)? 文字列 "Line" の 0 回または 1 回の繰り返しに一致します。

例 1

次の例では、メソッドを呼び出して、 Regex.Matches(String, String) 入力文字列内のすべてのパターン一致を取得します。 次に、返されたオブジェクト内のオブジェクトを反復処理して、 Match MatchCollection 各一致に関する情報を表示します。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "int[] values = { 1, 2, 3 };\n" +
                     "for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
                     "{\n" +
                     "   Console.Write(values[ctr]);\n" +
                     "   if (ctr < values.GetUpperBound(1))\n" +
                     "      Console.Write(\", \");\n" +
                     "}\n" +
                     "Console.WriteLine();\n";   
      
      string pattern = @"Console\.Write(Line)?";
      MatchCollection matches = Regex.Matches(input, pattern);
      foreach (Match match in matches)
         Console.WriteLine("'{0}' found in the source code at position {1}.",  
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//    'Console.Write' found in the source code at position 112.
//    'Console.Write' found in the source code at position 184.
//    'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
                            "For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
                            "   Console.Write(values(ctr))" & vbCrLf & _
                            "   If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
                            "Next" & vbCrLf & _
                            "Console.WriteLine()"   
      Dim pattern As String = "Console\.Write(Line)?"
      Dim matches As MatchCollection = Regex.Matches(input, pattern)
      For Each match As Match In matches
         Console.WriteLine("'{0}' found in the source code at position {1}.", _ 
                           match.Value, match.Index)       
      Next                            
   End Sub
End Module
' The example displays the following output:
'    'Console.Write' found in the source code at position 115.
'    'Console.Write' found in the source code at position 184.
'    'Console.WriteLine' found in the source code at position 211.

例 2

次の例では、 Match(String, String) メソッドとメソッドを呼び出して NextMatch 、一度に1つの一致を取得します。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "int[] values = { 1, 2, 3 };\n" +
                     "for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
                     "{\n" +
                     "   Console.Write(values[ctr]);\n" +
                     "   if (ctr < values.GetUpperBound(1))\n" +
                     "      Console.Write(\", \");\n" +
                     "}\n" +
                     "Console.WriteLine();\n";   
      string pattern = @"Console\.Write(Line)?";
      Match match = Regex.Match(input, pattern);
      while (match.Success)
      {
         Console.WriteLine("'{0}' found in the source code at position {1}.",  
                           match.Value, match.Index);
         match = match.NextMatch();
      }
   }
}
// The example displays the following output:
//    'Console.Write' found in the source code at position 112.
//    'Console.Write' found in the source code at position 184.
//    'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
                            "For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
                            "   Console.Write(values(ctr))" & vbCrLf & _
                            "   If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
                            "Next" & vbCrLf & _
                            "Console.WriteLine()"   
      Dim pattern As String = "Console\.Write(Line)?"
      Dim match As Match = Regex.Match(input, pattern)
      Do While match.Success
         Console.WriteLine("'{0}' found in the source code at position {1}.", _ 
                           match.Value, match.Index)
         match = match.NextMatch()                  
      Loop                            
   End Sub
End Module
' The example displays the following output:
'    'Console.Write' found in the source code at position 115.
'    'Console.Write' found in the source code at position 184.
'    'Console.WriteLine' found in the source code at position 211.

注釈

Matchオブジェクトは変更不可で、パブリックコンストラクターがありません。 クラスのインスタンス Match は、メソッドによって返され、 Regex.Match 文字列内の最初のパターン一致を表します。 後続の一致は Match 、メソッドによって返されるオブジェクトによって表され Match.NextMatch ます。 さらに、 MatchCollection 0 個以上のオブジェクトで構成されるオブジェクト Match は、メソッドによって返され Regex.Matches ます。

メソッドが Regex.Matches 入力文字列内の正規表現パターンに一致しない場合は、空のオブジェクトを返し MatchCollection ます。 次に、 foreach C# のコンストラクトまたは For Each Visual Basic の構成体を使用して、コレクションを反復処理できます。

メソッドが正規表現パターンに一致しない場合は、 Regex.Match Match と等しいオブジェクトが返さ Match.Empty れます。 プロパティを使用して、 Success 一致が成功したかどうかを判断できます。 具体的な例を次に示します。

// Search for a pattern that is not found in the input string.
string pattern = "dog";
string input = "The cat saw the other cats playing in the back yard.";
Match match = Regex.Match(input, pattern);
if (match.Success )
   // Report position as a one-based integer.
   Console.WriteLine("'{0}' was found at position {1} in '{2}'.", 
                     match.Value, match.Index + 1, input);
else
   Console.WriteLine("The pattern '{0}' was not found in '{1}'.",
                     pattern, input);
' Search for a pattern that is not found in the input string.
Dim pattern As String = "dog"
Dim input As String = "The cat saw the other cats playing in the back yard."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
   ' Report position as a one-based integer.
   Console.WriteLine("'{0}' was found at position {1} in '{2}'.", _ 
                     match.Value, match.Index + 1, input)
Else
   Console.WriteLine("The pattern '{0}' was not found in '{1}'.", _
                     pattern, input)
End If

パターン一致が成功した場合、プロパティは、一致した部分文字列を格納します。プロパティは、入力文字列内で一致した部分文字列の0から始まる Value Index 開始位置を示し、 Length プロパティは入力文字列内の一致した部分文字列の長さを示します。

単一の一致には複数のキャプチャグループが含まれる可能性があるため、にはを Match Groups 返すプロパティがあり GroupCollection ます。 Matchインスタンス自体は、コレクション内の最初のオブジェクトに相当します。このオブジェクトは、 Match.Groups[0] Match.Groups(0) 一致した文字列全体を表します (Visual Basic)。 次の方法で、キャプチャされたグループに一致したグループにアクセスできます。

  • オブジェクトのメンバーを反復処理する GroupCollection には、 foreach (C#) または For Each (Visual Basic) コンストラクトを使用します。

  • プロパティを使用し GroupCollection.Item[Int32] て、キャプチャグループの番号によってグループを取得できます。 インスタンスメソッドを呼び出すことによって、正規表現に存在する番号付きグループを特定でき Regex.GetGroupNumbers ます。

  • プロパティを使用し GroupCollection.Item[String] て、キャプチャグループの名前でグループを取得できます。 インスタンスメソッドを呼び出すことによって、正規表現に存在する名前付きグループを特定でき Regex.GetGroupNames() ます。

プロパティ

Captures

内側と左側が先の順序で、キャプチャ グループに一致したすべてのキャプチャ結果のコレクションを取得します。または、正規表現が RightToLeft オプションを使用して変更されている場合は、内側と右端が先の順序で取得します。 このコレクションには 0 個以上の項目が格納されています。

(継承元 Group)
Empty

空のグループを取得します。 一致する対象が見つからなかった検索は、この空一致を返します。

Groups

正規表現に一致したグループのコレクションを取得します。

Index

キャプチャした部分文字列の最初の文字が見つかる元の文字列内の位置。

(継承元 Capture)
Length

キャプチャした部分文字列の長さを取得します。

(継承元 Capture)
Name

現在のインスタンスで表されるキャプチャ グループの名前を返します。

(継承元 Group)
Success

一致した対象が見つかったかどうかを示す値を取得します。

(継承元 Group)
Value

入力文字列からキャプチャした部分文字列を取得します。

(継承元 Capture)
ValueSpan

入力文字列からキャプチャされたスパンを取得します。

(継承元 Capture)

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
NextMatch()

一致する対象が最後に見つかった位置の終了位置 (最後に一致した文字の後の文字) から開始して、次に一致する対象を検索した結果の新しい Match オブジェクトを返します。

Result(String)

指定された置換パターンを展開して返します。

Synchronized(Match)

指定されたオブジェクトと等価であり、かつ複数のスレッド間での共有に適した Match インスタンスを返します。

ToString()

Value プロパティを呼び出して、入力文字列からキャプチャされた部分文字列を取得します。

(継承元 Capture)

適用対象

こちらもご覧ください