Regex.Matchesメソッドは、正規表現を使って指定された入力文字列で、正規表現のすべての出現を取得するメソッドです。
確認した時点では、msdnのRegex.Match メソッドの説明は、翻訳が読みにくいので、自分で翻訳し直しました。
全ての部分を翻訳し直したわけではなく、また、リンクも再現していないので、元のページと比較しながらご利用下さい。
Regex.Matches メソッド (String)
msdnの情報:Regex.Matches メソッド (String)
指定された入力文字列で、正規表現のすべての出現を検索します。
構文
public MatchCollection Matches(
string input
)
パラメーター
- input
Type: System.String
一致するものを検索する文字列。
- 戻り値
Type: System.Text.RegularExpressions.MatchCollection
検索によって見つかった、Matchオブジェクトのコレクション。一致が見つからない場合、メソッドは、空のコレクション・オブジェクトを返します。
例外
例外 | 状態 |
---|---|
ArgumentNullException | 入力はnull |
備考
Matches(String)メソッドは、一つの一致の代わりに、入力文字列で見つかるすべての一致について、情報を返すこと以外は、Match(String)メソッドに似ています。 それは、次のコードと同等です。:
Match match = regex.Match(input);
while (match.Success) {
// Handle match here…
// 一致をここで処理します...
match = match.NextMatch();
}
コレクションは、一致だけが含まれており、そして、最初の不一致で終了します。
Matches(String)メソッドが、どれを検索するかを示す正規表現パターンは、1つのRegexクラスのコンストラクタへの呼び出しによって定義されています。 正規表現パターンを組み立てることができる要素の詳細については、正規表現言語 ― クイック・リファレンス ― を参照してください。
Matchesメソッドは、返されたMatchCollectionオブジェクトを埋め込むために、遅延評価を使用します。 MatchCollection.CountやMatchCollection.CopyToが、すぐに、コレクションに取り込まれるように、このコレクションのメンバーを呼び出します。 遅延評価を利用するために、あなたは、C#のforeachとVisual BasicのForEach…Nextのような、言語要素を使用してコレクションを繰り返す必要があります。
その遅延評価のため、Matches(String)メソッドを呼び出すと、RegexMatchTimeoutException例外が投げられません。 しかしながら、操作が、MatchTimeoutプロパティが、Regex.InfiniteMatchTimeoutでない場合、 このメソッドで返されるMatchCollectionオブジェクト上で実行されたとき、例外が、投げられます。 そして、一致する操作は、タイムアウト間隔を超過します。
使用例
次の例は、文が「es」で終わるいずれかの単語を認識するために、Matches(String)メソッドを使用します。
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
正規表現パターン\b\w+es\bは、次の表で示すように定義されます。
パターン | 説明 |
---|---|
\b | 単語の境界で一致を開始します。 |
\w+ | 1つ以上の単語の文字に一致します。 |
es | リテラル文字列「es」に一致します。 |
\b | 単語の境界で一致を終了します。 |
Regex.Matches メソッド (String, String)
msdnの情報:Regex.Matches メソッド (String, String)
指定された入力文字列で、指定された正規表現のすべての出現を検索します。
構文
public static MatchCollection Matches(
string input,
string pattern
)
パラメーター
- input
Type: System.String
一致するものを検索する文字列。
- pattern
Type: System.String
一致する正規表現パターン。
- 戻り値
Type: System.Text.RegularExpressions.MatchCollection
検索によって見つかった、Matchオブジェクトのコレクション。一致が見つからない場合、メソッドは、空のコレクション・オブジェクトを返します。
例外
例外 | 状態 |
---|---|
ArgumentException | 正規表現の解析エラーが発生しました。 |
ArgumentNullException | 入力やパターンは、nullです。 |
備考
Matches(String, String)メソッドは、それが、入力文字列で見つかるすべての一致について、一つの一致の代わりに、情報を返すこと以外は、Match(String, String)メソッドに似ています。それは、次のコードと同等です。:
Match match = Regex.Match(input, pattern);
while (match.Success) {
// Handle match here…
// 一致をここで処理します...
match = match.NextMatch();
}
static Matchesメソッドは、指定された正規表現パターンで、Regexオブジェクトを構築することと同じです。そして、インスタンスメソッドの一致を呼び出します。
パターン・パラメータは、一致するための文字列を象徴的に説明する正規表現言語要素から構成されています。正規表現の詳細については、.NET Frameworkの正規表現と正規表現言語 ― クイック・リファレンス ― を参照してください。
Matchesメソッドは、返されたMatchCollectionオブジェクトを埋め込むために、遅延評価を使用します。このコレクションのメンバーを呼び出します。MatchCollection.CountやMatchCollection.CopyToが、すぐに、コレクションに取り込まれるように、遅延評価を利用するために、あなたは、C#のforeachとVisual BasicのForEach…Nextのような、言語要素を使用して、コレクションを繰り返す必要があります。
その遅延評価のため、Matches(String, String)メソッドを呼び出すと、RegexMatchTimeoutException例外が投げられません。しかしながら、操作が、このメソッドで返されるMatchCollectionオブジェクト上で実行されたとき、例外が、投げられます。タイムアウト間隔が、現在のアプリケーションドメインの "REGEX_DEFAULT_MATCH_TIMEOUT"プロパティによって定義されている場合、そして、一致する操作は、タイムアウト間隔を超過します。
呼び出し時の注意:
このメソッドは、メソッドがタイムアウトするのを防ぐ値Regex.InfiniteMatchTimeoutが使用されるタイムアウト値が、アプリケーション・ドメインに定義されていない場合、呼び出されるアプリケーション・ドメインの既定のタイムアウト値と等価な一定間隔の後、タイムアウトします。複数のパターン一致を取得するために推奨された静的メソッドは、あなたが、タイムアウト間隔を指定することができるRegex.Matches(String, String, RegexOptions, TimeSpan)です。
使用例
次の例は、「es」で終わる文の単語を特定するために、Matches(String, String)メソッドを使います。
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
正規表現パターン\b\w+es\bは、次の表で示すように定義されます。
パターン | 説明 |
---|---|
\b | 単語の境界で一致を開始します。 |
\w+ | 1つ以上の単語の文字に一致します。 |
es | リテラル文字列「es」に一致します。 |
\b | 単語の境界で一致を終了します。 |
