Regex.Matches メソッド

定義

入力文字列内で正規表現と一致する対象をすべて検索し、見つかった対象をすべて返します。Searches an input string for all occurrences of a regular expression and returns all the matches.

オーバーロード

Matches(String)

指定した入力文字列内で、正規表現と一致する対象をすべて検索します。Searches the specified input string for all occurrences of a regular expression.

Matches(String, Int32)

入力文字列内の指定した開始位置から検索を開始した場合に、その指定入力文字列内で正規表現と一致する対象をすべて検索します。Searches the specified input string for all occurrences of a regular expression, beginning at the specified starting position in the string.

Matches(String, String)

指定した入力文字列内で、指定した正規表現に一致する箇所をすべて検索します。Searches the specified input string for all occurrences of a specified regular expression.

Matches(String, String, RegexOptions)

指定した一致オプションを使用して、指定した入力文字列内で、指定した正規表現に一致する箇所をすべて検索します。Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options.

Matches(String, String, RegexOptions, TimeSpan)

指定した一致オプションとタイムアウト間隔を使用して、指定した入力文字列内で、指定した正規表現に一致するすべての箇所を検索します。Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options and time-out interval.

Matches(String)

指定した入力文字列内で、正規表現と一致する対象をすべて検索します。Searches the specified input string for all occurrences of a regular expression.

public:
 System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input);
public System.Text.RegularExpressions.MatchCollection Matches (string input);
member this.Matches : string -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String) As MatchCollection

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

戻り値

検索によって見つかった Match オブジェクトのコレクション。A collection of the Match objects found by the search. 一致が見つからない場合は、空のコレクション オブジェクトが返されます。If no matches are found, the method returns an empty collection object.

例外

inputnull です。input is null.

次の例では、Matches(String) メソッドを使用して、"es" で終わる文内の単語を識別します。The following example uses the Matches(String) method to identify any words in a sentence that end in "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes?";
      
      foreach (Match match in rgx.Matches(sentence))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes?"
      
      For Each match As Match In rgx.Matches(sentence)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

正規表現パターン \b\w+es\b は、次の表に示すように定義されています。The regular expression pattern \b\w+es\b is defined as shown in the following table.

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
\w+ 1 つ以上の単語文字に一致します。Match one or more word characters.
es リテラル文字列 "es" と一致します。Match the literal string "es".
\b ワード境界で照合を終了します。End the match at a word boundary.

注釈

Matches(String) メソッドは、単一の一致ではなく、入力文字列内で見つかったすべての一致に関する情報を返す点を除いて、Match(String) メソッドに似ています。The Matches(String) method is similar to the Match(String) method, except that it returns information about all the matches found in the input string, instead of a single match. これは、次のコードと同じです。It is equivalent to the following code:

Match match = regex.Match(input);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}  
Dim match As Match = regex.Match(input)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop  

コレクションには、一致するもののみが含まれ、最初の一致しない位置で終了します。The collection includes only matches and terminates at the first non-match.

Matches(String) メソッドが検索する正規表現パターンは、Regex クラスコンストラクターのいずれかを呼び出すことによって定義されます。The regular expression pattern for which the Matches(String) method searches is defined by the call to one of the Regex class constructors. 正規表現パターンを形成できる要素の詳細については、「正規表現言語-クイックリファレンス」を参照してください。For more information about the elements that can form a regular expression pattern, see Regular Expression Language - Quick Reference.

Matches メソッドは、レイジー評価を使用して、返された MatchCollection オブジェクトを設定します。The Matches method uses lazy evaluation to populate the returned MatchCollection object. MatchCollection.CountMatchCollection.CopyTo など、このコレクションのメンバーにアクセスすると、コレクションに直ちに値が設定されます。Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. レイジー評価を利用するには、および For Each... のC# foreach などの構成体を使用してコレクションを反復処理する必要がありNextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext Visual Basic では、上記のようになります。in Visual Basic.

遅延評価のため、Matches(String) メソッドを呼び出すと、RegexMatchTimeoutException 例外はスローされません。Because of its lazy evaluation, calling the Matches(String) method does not throw a RegexMatchTimeoutException exception. ただし、この例外は、このメソッドによって返された MatchCollection オブジェクトに対して操作が実行された場合にスローされます。この場合、MatchTimeout プロパティが Regex.InfiniteMatchTimeout ではなく、一致操作がタイムアウト間隔を超えている場合に発生します。However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if the MatchTimeout property is not Regex.InfiniteMatchTimeout and a matching operation exceeds the time-out interval.

こちらもご覧ください

Matches(String, Int32)

入力文字列内の指定した開始位置から検索を開始した場合に、その指定入力文字列内で正規表現と一致する対象をすべて検索します。Searches the specified input string for all occurrences of a regular expression, beginning at the specified starting position in the string.

public:
 System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, int startat);
public System.Text.RegularExpressions.MatchCollection Matches (string input, int startat);
member this.Matches : string * int -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String, startat As Integer) As MatchCollection

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

startat
Int32

入力文字列内の検索を開始する文字位置。The character position in the input string at which to start the search.

戻り値

検索によって見つかった Match オブジェクトのコレクション。A collection of the Match objects found by the search. 一致が見つからない場合は、空のコレクション オブジェクトが返されます。If no matches are found, the method returns an empty collection object.

例外

inputnull です。input is null.

startat が 0 未満か、input の長さを超えています。startat is less than zero or greater than the length of input.

次の例では、Match(String) メソッドを使用して、"es" で終わる文の最初の単語を検索し、Matches(String, Int32) メソッドを呼び出して、"es" で終わる追加の単語を識別します。The following example uses the Match(String) method to find the first word in a sentence that ends in "es", and then calls the Matches(String, Int32) method to identify any additional words that end in "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes and uses our paper?";
      
      // Get the first match.
      Match match = rgx.Match(sentence);
      if (match.Success) {
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", 
                           match.Value, match.Index);
         // Get any additional matches.
         foreach (Match m in rgx.Matches(sentence, match.Index + match.Length))
            Console.WriteLine("Also found '{0}' at position {1}", 
                              m.Value, m.Index);
      }   
   }
}
// The example displays the following output:
//       Found first 'es' in 'writes' at position 4
//       Also found 'notes' at position 17
//       Also found 'uses' at position 27
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes and uses our paper?"
      
      ' Get the first match.
      Dim match As Match = rgx.Match(sentence)
      If match.Success Then
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", _
                           match.Value, match.Index)
         ' Get any additional matches.
         For Each match In rgx.Matches(sentence, match.Index + match.Length)
            Console.WriteLine("Also found '{0}' at position {1}", _
                              match.Value, match.Index)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Found first 'es' in 'writes' at position 4
'       Also found 'notes' at position 17
'       Also found 'uses' at position 27

正規表現パターン \b\w+es\b は、次の表に示すように定義されています。The regular expression pattern \b\w+es\b is defined as shown in the following table.

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
\w+ 1 つ以上の単語文字に一致します。Match one or more word characters.
es リテラル文字列 "es" と一致します。Match the literal string "es".
\b ワード境界で照合を終了します。End the match at a word boundary.

注釈

Matches(String, Int32) メソッドは、単一の一致ではなく、入力文字列内で見つかったすべての一致に関する情報を返す点を除いて、Match(String, Int32) メソッドに似ています。The Matches(String, Int32) method is similar to the Match(String, Int32) method, except that it returns information about all the matches found in the input string, instead of a single match. これは、次のコードと同じです。It is equivalent to the following code:

Match match = regex.Match(input, startAt);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}  
Dim match As Match = regex.Match(input, startAt)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop  

Matches(String, Int32) メソッドが検索する正規表現パターンは、Regex クラスコンストラクターのいずれかを呼び出すことによって定義されます。The regular expression pattern for which the Matches(String, Int32) method searches is defined by the call to one of the Regex class constructors. 正規表現パターンを形成できる要素の詳細については、「正規表現言語-クイックリファレンス」を参照してください。For more information about the elements that can form a regular expression pattern, see Regular Expression Language - Quick Reference.

Matches メソッドは、レイジー評価を使用して、返された MatchCollection オブジェクトを設定します。The Matches method uses lazy evaluation to populate the returned MatchCollection object. MatchCollection.CountMatchCollection.CopyTo など、このコレクションのメンバーにアクセスすると、コレクションに直ちに値が設定されます。Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. レイジー評価を利用するには、および For Each... のC# foreach などの構成体を使用してコレクションを反復処理する必要がありNextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext Visual Basic では、上記のようになります。in Visual Basic.

遅延評価のため、Matches(String, Int32) メソッドを呼び出すと、RegexMatchTimeoutException 例外はスローされません。Because of its lazy evaluation, calling the Matches(String, Int32) method does not throw a RegexMatchTimeoutException exception. ただし、この例外は、このメソッドによって返された MatchCollection オブジェクトに対して操作が実行された場合にスローされます。この場合、MatchTimeout プロパティが Regex.InfiniteMatchTimeout ではなく、一致操作がタイムアウト間隔を超えている場合に発生します。However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if the MatchTimeout property is not Regex.InfiniteMatchTimeout and a matching operation exceeds the time-out interval.

こちらもご覧ください

Matches(String, String)

指定した入力文字列内で、指定した正規表現に一致する箇所をすべて検索します。Searches the specified input string for all occurrences of a specified regular expression.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern);
static member Matches : string * string -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String) As MatchCollection

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

一致させる正規表現パターン。The regular expression pattern to match.

戻り値

検索によって見つかった Match オブジェクトのコレクション。A collection of the Match objects found by the search. 一致が見つからない場合は、空のコレクション オブジェクトが返されます。If no matches are found, the method returns an empty collection object.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

input または patternnull です。input or pattern is null.

次の例では、Matches(String, String) メソッドを使用して、"es" で終わる文内の単語を識別します。The following example uses the Matches(String, String) method to identify any word in a sentence that ends in "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "Who writes these notes?";
      
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "Who writes these notes?"
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

正規表現パターン \b\w+es\b は、次の表に示すように定義されています。The regular expression pattern \b\w+es\b is defined as shown in the following table.

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
\w+ 1 つ以上の単語文字に一致します。Match one or more word characters.
es リテラル文字列 "es" と一致します。Match the literal string "es".
\b ワード境界で照合を終了します。End the match at a word boundary.

注釈

Matches(String, String) メソッドは、単一の一致ではなく、入力文字列内で見つかったすべての一致に関する情報を返す点を除いて、Match(String, String) メソッドに似ています。The Matches(String, String) method is similar to the Match(String, String) method, except that it returns information about all the matches found in the input string, instead of a single match. これは、次のコードと同じです。It is equivalent to the following code:

Match match = Regex.Match(input, pattern);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}  
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop  

静的 Matches メソッドは、指定された正規表現パターンで Regex オブジェクトを構築し、インスタンスメソッド Matchesを呼び出すことと同じです。The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern パラメーターは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「 .NET Framework 正規表現正規表現言語-クイックリファレンス」を参照してください。For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Matches メソッドは、レイジー評価を使用して、返された MatchCollection オブジェクトを設定します。The Matches method uses lazy evaluation to populate the returned MatchCollection object. MatchCollection.CountMatchCollection.CopyTo など、このコレクションのメンバーにアクセスすると、コレクションに直ちに値が設定されます。Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. レイジー評価を利用するには、および For Each... のC# foreach などの構成体を使用してコレクションを反復処理する必要がありNextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext Visual Basic では、上記のようになります。in Visual Basic.

遅延評価のため、Matches(String, String) メソッドを呼び出すと、RegexMatchTimeoutException 例外はスローされません。Because of its lazy evaluation, calling the Matches(String, String) method does not throw a RegexMatchTimeoutException exception. ただし、タイムアウト間隔が現在のアプリケーションドメインの "REGEX_DEFAULT_MATCH_TIMEOUT" プロパティによって定義され、一致操作がこのタイムアウト期間を超えた場合に、このメソッドによって返される MatchCollection オブジェクトに対して操作が実行されると、例外がスローされます。However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a time-out interval is defined by the "REGEX_DEFAULT_MATCH_TIMEOUT" property of the current application domain and a matching operation exceeds this time-out interval.

注意 (呼び出し元)

このメソッドは、呼び出されたアプリケーションドメインの既定のタイムアウト値と同じ間隔の後にタイムアウトします。This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. タイムアウト値がアプリケーションドメインに対して定義されていない場合は、メソッドがタイムアウトしないように InfiniteMatchTimeout値が使用されます。If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. 複数のパターン一致を取得するために推奨される静的メソッドは Matches(String, String, RegexOptions, TimeSpan)であり、タイムアウト間隔を指定できます。The recommended static method for retrieving multiple pattern matches is Matches(String, String, RegexOptions, TimeSpan), which lets you specify the time-out interval.

こちらもご覧ください

Matches(String, String, RegexOptions)

指定した一致オプションを使用して、指定した入力文字列内で、指定した正規表現に一致する箇所をすべて検索します。Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions) As MatchCollection

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

一致させる正規表現パターン。The regular expression pattern to match.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify options for matching.

戻り値

検索によって見つかった Match オブジェクトのコレクション。A collection of the Match objects found by the search. 一致が見つからない場合は、空のコレクション オブジェクトが返されます。If no matches are found, the method returns an empty collection object.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

input または patternnull です。input or pattern is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

次の例では、Matches(String, String) メソッドを呼び出して、"es" で終わる文内の単語を特定し、Matches(String, String, RegexOptions) メソッドを呼び出して、パターンと入力文字列の大文字と小文字を区別しない比較を実行します。The following example calls the Matches(String, String) method to identify any word in a sentence that ends in "es", and then calls the Matches(String, String, RegexOptions) method to perform a case-insensitive comparison of the pattern with the input string. 出力に示されているように、2つのメソッドは異なる結果を返します。As the output shows, the two methods return different results.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      For Each match As Match In Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

正規表現パターン \b\w+es\b は、次の表に示すように定義されています。The regular expression pattern \b\w+es\b is defined as shown in the following table.

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
\w+ 1 つ以上の単語文字に一致します。Match one or more word characters.
es リテラル文字列 "es" と一致します。Match the literal string "es".
\b ワード境界で照合を終了します。End the match at a word boundary.

注釈

Matches(String, String, RegexOptions) メソッドは、単一の一致ではなく、入力文字列内で見つかったすべての一致に関する情報を返す点を除いて、Match(String, String, RegexOptions) メソッドに似ています。The Matches(String, String, RegexOptions) method is similar to the Match(String, String, RegexOptions) method, except that it returns information about all the matches found in the input string, instead of a single match. これは、次のコードと同じです。It is equivalent to the following code:

Match match = Regex.Match(input, pattern, options);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}  
Dim match As Match = Regex.Match(input, pattern, options)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop  

静的 Matches メソッドは、指定された正規表現パターンで Regex オブジェクトを構築し、インスタンスメソッド Matchesを呼び出すことと同じです。The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern パラメーターは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「 .NET Framework 正規表現正規表現言語-クイックリファレンス」を参照してください。For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Matches メソッドは、レイジー評価を使用して、返された MatchCollection オブジェクトを設定します。The Matches method uses lazy evaluation to populate the returned MatchCollection object. MatchCollection.CountMatchCollection.CopyTo など、このコレクションのメンバーにアクセスすると、コレクションに直ちに値が設定されます。Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. レイジー評価を利用するには、および For Each... のC# foreach などの構成体を使用してコレクションを反復処理する必要がありNextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext Visual Basic では、上記のようになります。in Visual Basic.

遅延評価のため、Matches(String, String) メソッドを呼び出すと、RegexMatchTimeoutException 例外はスローされません。Because of its lazy evaluation, calling the Matches(String, String) method does not throw a RegexMatchTimeoutException exception. ただし、タイムアウト間隔が現在のアプリケーションドメインの "REGEX_DEFAULT_MATCH_TIMEOUT" プロパティによって定義され、一致操作がこのタイムアウト期間を超えた場合に、このメソッドによって返される MatchCollection オブジェクトに対して操作が実行されると、例外がスローされます。However, the exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a time-out interval is defined by the "REGEX_DEFAULT_MATCH_TIMEOUT" property of the current application domain and a matching operation exceeds this time-out interval.

注意 (呼び出し元)

このメソッドは、呼び出されたアプリケーションドメインの既定のタイムアウト値と同じ間隔の後にタイムアウトします。This method times out after an interval that is equal to the default time-out value of the application domain in which it is called. タイムアウト値がアプリケーションドメインに対して定義されていない場合は、メソッドがタイムアウトしないように InfiniteMatchTimeout値が使用されます。If a time-out value has not been defined for the application domain, the value InfiniteMatchTimeout, which prevents the method from timing out, is used. 複数のパターン一致を取得するために推奨される静的メソッドは Matches(String, String, RegexOptions, TimeSpan)であり、タイムアウト間隔を設定できます。The recommended static method for retrieving multiple pattern matches is Matches(String, String, RegexOptions, TimeSpan), which lets you set the time-out interval.

こちらもご覧ください

Matches(String, String, RegexOptions, TimeSpan)

指定した一致オプションとタイムアウト間隔を使用して、指定した入力文字列内で、指定した正規表現に一致するすべての箇所を検索します。Searches the specified input string for all occurrences of a specified regular expression, using the specified matching options and time-out interval.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As MatchCollection

パラメーター

input
String

一致する対象を検索する文字列。The string to search for a match.

pattern
String

一致させる正規表現パターン。The regular expression pattern to match.

options
RegexOptions

一致オプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify options for matching.

matchTimeout
TimeSpan

タイムアウト期間、またはメソッドがタイムアウトしないことを示す InfiniteMatchTimeoutA time-out interval, or InfiniteMatchTimeout to indicate that the method should not time out.

戻り値

検索によって見つかった Match オブジェクトのコレクション。A collection of the Match objects found by the search. 一致が見つからない場合は、空のコレクション オブジェクトが返されます。If no matches are found, the method returns an empty collection object.

例外

正規表現の解析エラーが発生しました。A regular expression parsing error occurred.

input または patternnull です。input or pattern is null.

options は、RegexOptions 値のビットごとの正しい組み合わせではありません。options is not a valid bitwise combination of RegexOptions values.

または-or- matchTimeout が負の値か、0 か、または約 24 日を超えています。matchTimeout is negative, zero, or greater than approximately 24 days.

次の例では、Matches(String, String, RegexOptions, TimeSpan) メソッドを呼び出して、"es" で終わる文の単語と一致する大文字と小文字を区別する比較を実行します。The following example calls the Matches(String, String, RegexOptions, TimeSpan) method to perform a case-sensitive comparison that matches any word in a sentence that ends in "es". 次に、Matches(String, String, RegexOptions, TimeSpan) メソッドを呼び出して、入力文字列とパターンの大文字と小文字を区別しない比較を実行します。It then calls the Matches(String, String, RegexOptions, TimeSpan) method to perform a case-insensitive comparison of the pattern with the input string. どちらの場合も、タイムアウト間隔は1秒に設定されます。In both cases, the time-out interval is set to one second. 出力に示されているように、2つのメソッドは異なる結果を返します。As the output shows, the two methods return different results.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      try {
         foreach (Match match in Regex.Matches(sentence, pattern,
                                               RegexOptions.None,
                                               TimeSpan.FromSeconds(1)))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {
         // Do Nothing: Assume that timeout represents no match.
      }
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      try { 
         foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {}
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern, 
                                               RegexOptions.None, 
                                               TimeSpan.FromSeconds(1))
         Try
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Catch e As RegexMatchTimeoutException
            ' Do Nothing: Assume that timeout represents no match.
         End Try
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      Try
         For Each match As Match In Regex.Matches(sentence, pattern, 
                                                  RegexOptions.IgnoreCase,
                                                  TimeSpan.FromSeconds(1))
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Next
      Catch de As RegexMatchTimeoutException
         ' Do Nothing: Assume that timeout represents no match.
      End Try
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

正規表現パターン \b\w+es\b は、次の表に示すように定義されています。The regular expression pattern \b\w+es\b is defined as shown in the following table.

パターンPattern 説明Description
\b ワード境界から照合を開始します。Begin the match at a word boundary.
\w+ 1 つ以上の単語文字に一致します。Match one or more word characters.
es リテラル文字列 "es" と一致します。Match the literal string "es".
\b ワード境界で照合を終了します。End the match at a word boundary.

注釈

Matches(String, String, RegexOptions, TimeSpan) メソッドは、単一の一致ではなく、入力文字列内で見つかったすべての一致に関する情報を返す点を除いて、Match(String, String, RegexOptions, TimeSpan) メソッドに似ています。The Matches(String, String, RegexOptions, TimeSpan) method is similar to the Match(String, String, RegexOptions, TimeSpan) method, except that it returns information about all the matches found in the input string, instead of a single match. これは、次のコードと同じです。It is equivalent to the following code:

   try {
      Match match = Regex.Match(input, pattern, options,
                                TimeSpan.FromSeconds(1));
      while (match.Success) {
            // Handle match here...

            match = match.NextMatch();
      }  
   }
   catch (RegexMatchTimeoutException) {
      // Do nothing: assume that exception represents no match.
   }
   Try
      Dim match As Match = Regex.Match(input, pattern, options, 
                                       TimeSpan.FromSeconds(1))
      Do While match.Success
            ' Handle match here...

            match = match.NextMatch()
      Loop  
   Catch e As RegexMatchTimeoutException
      ' Do nothing: assume that exception represents no match.
   End Try   

静的 Matches メソッドは、指定された正規表現パターンで Regex オブジェクトを構築し、インスタンスメソッド Matchesを呼び出すことと同じです。The static Matches methods are equivalent to constructing a Regex object with the specified regular expression pattern and calling the instance method Matches.

pattern パラメーターは、一致させる文字列をシンボリックに記述する正規表現言語要素で構成されます。The pattern parameter consists of regular expression language elements that symbolically describe the string to match. 正規表現の詳細については、「 .NET Framework 正規表現正規表現言語-クイックリファレンス」を参照してください。For more information about regular expressions, see .NET Framework Regular Expressions and Regular Expression Language - Quick Reference.

Matches メソッドは、レイジー評価を使用して、返された MatchCollection オブジェクトを設定します。The Matches method uses lazy evaluation to populate the returned MatchCollection object. MatchCollection.CountMatchCollection.CopyTo など、このコレクションのメンバーにアクセスすると、コレクションに直ちに値が設定されます。Accessing members of this collection such as MatchCollection.Count and MatchCollection.CopyTo causes the collection to be populated immediately. レイジー評価を利用するには、および For Each... のC# foreach などの構成体を使用してコレクションを反復処理する必要がありNextTo take advantage of lazy evaluation, you should iterate the collection by using a construct such as foreach in C# and For EachNext Visual Basic では、上記のようになります。in Visual Basic.

遅延評価のため、Matches メソッドを呼び出すと、RegexMatchTimeoutException 例外はスローされません。Because of its lazy evaluation, calling the Matches method does not throw a RegexMatchTimeoutException exception. ただし、このメソッドによって返された MatchCollection オブジェクトに対して操作が実行された場合、一致する操作がmatchTimeout パラメーターで指定されたこのタイムアウト時間を超えると、例外がスローされます。However, an exception is thrown when an operation is performed on the MatchCollection object returned by this method, if a matching operation exceeds this time-out interval specified by thematchTimeout parameter.

注意 (呼び出し元)

matchTimeout パラメーターには、2秒などの適切な値を設定することをお勧めします。We recommend that you set the matchTimeout parameter to an appropriate value, such as two seconds. InfiniteMatchTimeoutを指定してタイムアウトを無効にすると、正規表現エンジンのパフォーマンスが若干向上します。If you disable time-outs by specifying InfiniteMatchTimeout, the regular expression engine offers slightly better performance. ただし、次の条件下でのみタイムアウトを無効にする必要があります。However, you should disable time-outs only under the following conditions: -正規表現によって処理される入力が既知の信頼できるソースから派生した場合、または静的なテキストで構成されている場合。- When the input processed by a regular expression is derived from a known and trusted source or consists of static text. これにより、ユーザーが動的に入力したテキストは除外されます。This excludes text that has been dynamically input by users.

-正規表現パターンが完全にテストされ、一致、一致しない、および近い一致を効率的に処理できるようになった場合。- When the regular expression pattern has been thoroughly tested to ensure that it efficiently handles matches, non-matches, and near matches.

-正規表現パターンに、ほぼ一致を処理するときに過度なバックトラッキングを発生させることがわかっている言語要素が含まれていない場合。- When the regular expression pattern contains no language elements that are known to cause excessive backtracking when processing a near match.

こちらもご覧ください

適用対象