Regex.Match メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
正規表現パターンと一致する部分文字列の入力文字列を検索し、最初に一致したものを 1 つの Match オブジェクトとして返します。
オーバーロード
Match(String, String, RegexOptions) |
指定した一致オプションを使用して、入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。 |
Match(String) |
指定した入力文字列内で、Regex コンストラクターで指定された正規表現と最初に一致する対象を 1 つ検索します。 |
Match(String, Int32) |
入力文字列内の指定した開始位置から開始して、その入力文字列内で正規表現に最初に一致する箇所を検索します。 |
Match(String, String) |
指定した入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。 |
Match(String, Int32, Int32) |
入力文字列内の指定した開始位置から開始し、指定した文字数だけを検索対象として、その入力文字列内で正規表現に最初に一致する箇所を検索します。 |
Match(String, String, RegexOptions, TimeSpan) |
指定した一致オプションとタイムアウト間隔を使用して、入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。 |
Match(String, String, RegexOptions)
指定した一致オプションを使用して、入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
- pattern
- String
一致させる正規表現パターン。
- options
- RegexOptions
一致オプションを指定する列挙値のビットごとの組み合わせ。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
正規表現の解析エラーが発生しました。
input
または pattern
が null
です。
options
は、RegexOptions 値のビットごとの正しい組み合わせではありません。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
例
次の例では、文字 "a" で始まる単語に一致する正規表現を定義します。 このオプションを RegexOptions.IgnoreCase 使用して、正規表現で大文字の "a" と小文字の "a" の両方で始まる単語が検索されるようにします。
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example2
{
public static void Main()
{
string pattern = @"\ba\w*\b";
string input = "An extraordinary day dawns with each new day.";
Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
if (m.Success)
Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index);
}
}
}
// The example displays the following output:
// Found 'An' at position 0.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\ba\w*\b"
Dim input As String = "An extraordinary day dawns with each new day."
Dim m As Match = Regex.Match(input, pattern, RegexOptions.IgnoreCase)
If m.Success Then
Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index)
End If
End Sub
End Module
' The example displays the following output:
' Found 'An' at position 0.
この正規表現パターン \ba\w*\b
の解釈を次の表に示します。
パターン | 説明 |
---|---|
\b |
ワード境界から照合を開始します。 |
a |
文字 "a" と一致します。 |
\w* |
0、1、または複数の単語文字と一致します。 |
\b |
ワード境界で照合を終了します。 |
注釈
メソッドは Match(String, String, RegexOptions) 、入力文字列の正規表現パターンに一致する最初の部分文字列を返します。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
静的 Match(String, String, RegexOptions) メソッドは、コンストラクターを使用してオブジェクトを Regex 構築し、 Regex(String, RegexOptions) インスタンス Match(String) メソッドを呼び出すことと同じです。
パラメーターは pattern
、一致する文字列をシンボル的に記述する正規表現言語要素で構成されます。 正規表現の詳細については、「 .NET 正規表現 と 正規表現言語 - クイック リファレンス」を参照してください。
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致するものが見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
このメソッドは、正規表現パターンに一致する で input
見つかった最初の部分文字列を返します。 後続の一致を取得するには、返された Match オブジェクトの NextMatch メソッドを繰り返し呼び出します。 メソッドを呼び出すことで、1 つのメソッド呼び出しですべての一致を Regex.Matches(String, String, RegexOptions) 取得することもできます。
RegexMatchTimeoutException一致する操作の実行時間が、メソッドが呼び出されるアプリケーション ドメインに指定されたタイムアウト間隔を超えると、例外がスローされます。 アプリケーション ドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値が の場合、 Regex.InfiniteMatchTimeout例外はスローされません。
注意 (呼び出し元)
このメソッドは、呼び出されるアプリケーション ドメインの既定のタイムアウト値と等しい間隔の後にタイムアウトします。 アプリケーション ドメインにタイムアウト値が定義されていない場合は、メソッドのタイムアウトを妨げる値 InfiniteMatchTimeoutが使用されます。 パターン一致を取得するための推奨される静的メソッドは です Match(String, String)。これにより、タイムアウト間隔を設定できます。
こちらもご覧ください
適用対象
Match(String)
指定した入力文字列内で、Regex コンストラクターで指定された正規表現と最初に一致する対象を 1 つ検索します。
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input);
public System.Text.RegularExpressions.Match Match (string input);
member this.Match : string -> System.Text.RegularExpressions.Match
Public Function Match (input As String) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
input
が null
です。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
例
次の例では、文字列内の正規表現パターンの一致を検索し、一致するグループ、キャプチャ、およびキャプチャ位置を一覧表示します。
#using <System.dll>
using namespace System;
using namespace System::Text::RegularExpressions;
void main()
{
String^ text = "One car red car blue car";
String^ pat = "(\\w+)\\s+(car)";
// Compile the regular expression.
Regex^ r = gcnew Regex( pat,RegexOptions::IgnoreCase );
// Match the regular expression pattern against a text string.
Match^ m = r->Match(text);
int matchCount = 0;
while ( m->Success )
{
Console::WriteLine( "Match{0}", ++matchCount );
for ( int i = 1; i <= 2; i++ )
{
Group^ g = m->Groups[ i ];
Console::WriteLine( "Group{0}='{1}'", i, g );
CaptureCollection^ cc = g->Captures;
for ( int j = 0; j < cc->Count; j++ )
{
Capture^ c = cc[ j ];
System::Console::WriteLine( "Capture{0}='{1}', Position={2}", j, c, c->Index );
}
}
m = m->NextMatch();
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
using System;
using System.Text.RegularExpressions;
class Example
{
static void Main()
{
string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
// Instantiate the regular expression object.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
Console.WriteLine("Match"+ (++matchCount));
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group"+i+"='" + g + "'");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
}
}
m = m.NextMatch();
}
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim text As String = "One car red car blue car"
Dim pattern As String = "(\w+)\s+(car)"
' Instantiate the regular expression object.
Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)
' Match the regular expression pattern against a text string.
Dim m As Match = r.Match(text)
Dim matchcount as Integer = 0
Do While m.Success
matchCount += 1
Console.WriteLine("Match" & (matchCount))
Dim i As Integer
For i = 1 to 2
Dim g as Group = m.Groups(i)
Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
Dim cc As CaptureCollection = g.Captures
Dim j As Integer
For j = 0 to cc.Count - 1
Dim c As Capture = cc(j)
Console.WriteLine("Capture" & j & "='" & c.ToString() _
& "', Position=" & c.Index)
Next
Next
m = m.NextMatch()
Loop
End Sub
End Module
' This example displays the following output:
' Match1
' Group1='One'
' Capture0='One', Position=0
' Group2='car'
' Capture0='car', Position=4
' Match2
' Group1='red'
' Capture0='red', Position=8
' Group2='car'
' Capture0='car', Position=12
' Match3
' Group1='blue'
' Capture0='blue', Position=16
' Group2='car'
' Capture0='car', Position=21
正規表現パターン (\w+)\s+(car)
は、単語 "car" の出現箇所とその前の単語と一致します。 次の表に示すように解釈されます。
Pattern | 説明 |
---|---|
(\w+) |
1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。 |
\s+ |
1 つ以上の空白文字と一致します。 |
(車) | リテラル文字列 "car" と一致します。 これが 2 番目のキャプチャ グループです。 |
注釈
メソッドは Match(String) 、入力文字列の正規表現パターンに一致する最初の部分文字列を返します。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致するものが見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
このメソッドは、正規表現パターンに一致する の input
最初の部分文字列を返します。 後続の一致を取得するには、返された Match オブジェクトの Match.NextMatch メソッドを繰り返し呼び出します。 メソッドを呼び出すことで、1 つのメソッド呼び出しですべての一致を Regex.Matches(String) 取得することもできます。
RegexMatchTimeoutException一致する操作の実行時間がコンストラクターで指定されたタイムアウト間隔を超えると、例外がRegex.Regex(String, RegexOptions, TimeSpan)スローされます。 コンストラクターを呼び出すときにタイムアウト間隔を設定しない場合、オブジェクトが作成されるアプリケーション ドメイン Regex に対して確立されたタイムアウト値を操作が超えると、例外がスローされます。 コンストラクター呼び出しまたはアプリケーション ドメインのプロパティで Regex タイムアウトが定義されていない場合、またはタイムアウト値が の場合、 Regex.InfiniteMatchTimeout例外はスローされません。
こちらもご覧ください
適用対象
Match(String, Int32)
入力文字列内の指定した開始位置から開始して、その入力文字列内で正規表現に最初に一致する箇所を検索します。
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int startat);
public System.Text.RegularExpressions.Match Match (string input, int startat);
member this.Match : string * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, startat As Integer) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
- startat
- Int32
検索を開始する 0 から始まる文字位置。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
input
が null
です。
startat
が 0 未満か、input
の長さを超えています。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
注釈
メソッドは Match(String, Int32) 、入力文字列内の文字位置以降の正規表現パターンに一致する最初の startat
部分文字列を返します。 メソッドが検索する Match(String, Int32) 正規表現パターンは、クラス コンストラクターの Regex 1 つを呼び出すことによって定義されます。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
startat
パラメーター
必要に応じて、 パラメーターを使用して文字列の開始位置を startat
指定できます。 文字列内の前 startat
から始まる一致は無視されます。 開始位置を指定しない場合、検索は既定の位置 (左から右への検索では の input
左端)、右から左への検索では の右端 input
から始まります。 から startat
始まるにもかかわらず、返される一致のインデックスは文字列の先頭に対して相対的です。
正規表現エンジンでは、 の前から一致するものは返されませんが、 の前startat
startat
の文字列は無視されません。 つまり、 アンカー や 後読みアサーションなどのアサーション は、入力全体に適用されます。 たとえば、次のコードには、入力文字列のインデックス 5 の前 startat
に発生した場合でも満たされる後読みアサーションを含むパターンが含まれています。
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example3
{
public static void Main()
{
string input = "Zip code: 98052";
var regex = new Regex(@"(?<=Zip code: )\d{5}");
Match match = regex.Match(input, 5);
if (match.Success)
Console.WriteLine("Match found: {0}", match.Value);
}
}
}
// This code prints the following output:
// Match found: 98052
ヒント
- パターンがアンカー
startat
で^
始まり、0 より大きい場合、インデックス 0 から開始するように 制約^
されているため、1 行の検索では一致は見つかりません。 - アンカーは
\G
でstartat
満たされます。 このため、文字列内の特定の文字位置で正確に開始するように一致を制限する場合は、左から右へのパターンに対して正規表現\G
を左に に固定します。 これにより、一致が制限され、正確にstartat
開始する必要があります (または、複数の一致が必要な場合は、一致が連続しています)。
右から左への検索
右から左への検索、つまり、 オプションを使用 RegexOptions.RightToLeft して正規表現パターンが構築されると、次のように動作します。
- スキャンは反対方向に移動し、パターンは背面 (右) から前面 (左) に一致します。
- 既定の開始位置は、入力文字列の右端です。
- が指定されている場合
startat
、右から左へのスキャンは、 - 1 (ではなくstartat
) の文字でstartat
開始されます。 - パターンの
\G
右端にアンカーを指定すると、(最初の) 一致が - 1 でstartat
正確に終了するように制限されます。
右から左への検索の詳細については、「 右から左へのモード」を参照してください。
一致が見つかったかどうかを判断する
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致するものが見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
最初または複数の一致
このメソッドは、正規表現パターンに一致する の startat
文字位置以降に input
見つかった最初の部分文字列を返します。 後続の一致を取得するには、返された Match オブジェクトの Match.NextMatch メソッドを繰り返し呼び出します。 メソッドを呼び出すことで、1 つのメソッド呼び出しですべての一致を Regex.Matches(String, Int32) 取得することもできます。
タイムアウト例外
RegexMatchTimeoutException一致する操作の実行時間がコンストラクターで指定されたタイムアウト間隔を超えると、例外がRegex.Regex(String, RegexOptions, TimeSpan)スローされます。 コンストラクターを呼び出すときにタイムアウト間隔を設定しない場合、オブジェクトが作成されるアプリケーション ドメイン Regex に対して確立されたタイムアウト値を操作が超えると、例外がスローされます。 コンストラクター呼び出しまたはアプリケーション ドメインのプロパティで Regex タイムアウトが定義されていない場合、またはタイムアウト値が の場合、 Regex.InfiniteMatchTimeout例外はスローされません。
こちらもご覧ください
適用対象
Match(String, String)
指定した入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.Match Match (string input, string pattern);
static member Match : string * string -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
- pattern
- String
一致させる正規表現パターン。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
正規表現の解析エラーが発生しました。
input
または pattern
が null
です。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
例
次の例では、 メソッドを Match(String, String) 呼び出して、少なくとも 1 つの z
文字を含む最初の単語を検索し、 メソッドを Match.NextMatch 呼び出して追加の一致を検索します。
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example
{
public static void Main()
{
string input = "ablaze beagle choral dozen elementary fanatic " +
"glaze hunger inept jazz kitchen lemon minus " +
"night optical pizza quiz restoration stamina " +
"train unrest vertical whiz xray yellow zealous";
string pattern = @"\b\w*z+\w*\b";
Match m = Regex.Match(input, pattern);
while (m.Success)
{
Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
m = m.NextMatch();
}
}
}
}
// The example displays the following output:
// 'ablaze' found at position 0
// 'dozen' found at position 21
// 'glaze' found at position 46
// 'jazz' found at position 65
// 'pizza' found at position 104
// 'quiz' found at position 110
// 'whiz' found at position 157
// 'zealous' found at position 174
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "ablaze beagle choral dozen elementary fanatic " +
"glaze hunger inept jazz kitchen lemon minus " +
"night optical pizza quiz restoration stamina " +
"train unrest vertical whiz xray yellow zealous"
Dim pattern As String = "\b\w*z+\w*\b"
Dim m As Match = Regex.Match(input, pattern)
Do While m.Success
Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index)
m = m.NextMatch()
Loop
End Sub
End Module
' The example displays the following output:
'ablaze' found at position 0
'dozen' found at position 21
'glaze' found at position 46
'jazz' found at position 65
'pizza' found at position 104
'quiz' found at position 110
'whiz' found at position 157
'zealous' found at position 174
この正規表現パターン \b\w*z+\w*\b
の解釈を次の表に示します。
パターン | 説明 |
---|---|
\b |
ワード境界から照合を開始します。 |
\w* |
0、1、または複数の単語文字と一致します。 |
z+ |
文字の 1 つ以上の出現箇所と z 一致します。 |
\w* |
0、1、または複数の単語文字と一致します。 |
\b |
ワード境界で照合を終了します。 |
注釈
メソッドは Match(String, String) 、入力文字列の正規表現パターンに一致する最初の部分文字列を返します。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
静的 Match(String, String) メソッドは、指定された正規表現パターンを Regex 使用してオブジェクトを構築し、インスタンス Match(String) メソッドを呼び出すことと同じです。 この場合、正規表現エンジンは正規表現パターンをキャッシュします。
パラメーターは pattern
、一致する文字列をシンボル的に記述する正規表現言語要素で構成されます。 正規表現の詳細については、「 .NET 正規表現 と 正規表現言語 - クイック リファレンス」を参照してください。
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致するものが見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
このメソッドは、正規表現パターンに一致する の input
最初の部分文字列を返します。 後続の一致を取得するには、返された Match オブジェクトの Match.NextMatch メソッドを繰り返し呼び出します。 メソッドを呼び出すことで、1 つのメソッド呼び出しですべての一致を Regex.Matches(String, String) 取得することもできます。
RegexMatchTimeoutException一致する操作の実行時間が、メソッドが呼び出されるアプリケーション ドメインに指定されたタイムアウト間隔を超えると、例外がスローされます。 アプリケーション ドメインのプロパティでタイムアウトが定義されていない場合、またはタイムアウト値が の場合、 Regex.InfiniteMatchTimeout例外はスローされません。
注意 (呼び出し元)
このメソッドは、呼び出されるアプリケーション ドメインの既定のタイムアウト値と等しい間隔の後にタイムアウトします。 アプリケーション ドメインにタイムアウト値が定義されていない場合は、メソッドのタイムアウトを妨げる値 InfiniteMatchTimeoutが使用されます。 パターン一致を取得するための推奨される静的メソッドは です Match(String, String)。これにより、タイムアウト間隔を設定できます。
こちらもご覧ください
適用対象
Match(String, Int32, Int32)
入力文字列内の指定した開始位置から開始し、指定した文字数だけを検索対象として、その入力文字列内で正規表現に最初に一致する箇所を検索します。
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int beginning, int length);
public System.Text.RegularExpressions.Match Match (string input, int beginning, int length);
member this.Match : string * int * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, beginning As Integer, length As Integer) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
- beginning
- Int32
検索対象の左端の位置を定義する、入力文字列内の 0 から始まる文字位置。
- length
- Int32
検索に含める部分文字列の文字数。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
input
が null
です。
beginning
が 0 未満か、input
の長さを超えています。
- または -
length
が 0 未満か、input
の長さを超えています。
- または -
beginning
+
length
-1
が input
の範囲外の位置を識別しています。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
注釈
メソッドは Match(String, Int32, Int32) 、入力文字列の一部の正規表現パターンに一致する最初の部分文字列を返します。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
メソッドが検索する Match(String, Int32, Int32) 正規表現パターンは、クラス コンストラクターの Regex 1 つを呼び出すことによって定義されます。 正規表現パターンを形成できる要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
メソッドはMatch(String, Int32, Int32)、 および length
パラメーターで定義されている のinput
部分をbeginning
検索して正規表現パターンを検索します。 beginning
は常に、検索に含める左端の文字のインデックスを定義し length
、検索する最大文字数を定義します。 一緒に、検索の範囲を定義します。 動作は、 が実質的input.Substring(beginning, length)
に であった場合input
とまったく同じですが、一致するインデックスは のinput
先頭に対してカウントされます。 つまり、パターンの先頭または末尾にあるアンカーまたはゼロ幅アサーションは、この範囲外がない input
かのように動作します。 たとえば、アンカー ^
、、\G
および \A
は で\z
beginning
$
満たされ、 は でbeginning + length - 1
満たされます。
検索が左から右 (既定値) に進む場合、正規表現エンジンはインデックス位置の文字からインデックス beginning
位置の文字まで検索します beginning + length - 1
。 検索が右から左に進むよう、 オプションを RegexOptions.RightToLeft 使用して正規表現エンジンがインスタンス化された場合、正規表現エンジンはインデックス位置の文字からインデックス beginning + length - 1
位置の文字 を検索します beginning
。
このメソッドは、この範囲内で検出された最初の一致を返します。 後続の一致を取得するには、返された Match オブジェクトの Match.NextMatch メソッドを繰り返し呼び出します。
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致するものが見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
RegexMatchTimeoutException一致する操作の実行時間がコンストラクターで指定されたタイムアウト間隔を超えると、例外がRegex.Regex(String, RegexOptions, TimeSpan)スローされます。 コンストラクターを呼び出すときにタイムアウト値を設定しない場合、オブジェクトが作成されるアプリケーション ドメイン Regex に対して確立されたタイムアウト値を操作が超えると、例外がスローされます。 コンストラクター呼び出しまたはアプリケーション ドメインのプロパティで Regex タイムアウトが定義されていない場合、またはタイムアウト値が の場合、 Regex.InfiniteMatchTimeout例外はスローされません。
こちらもご覧ください
適用対象
Match(String, String, RegexOptions, TimeSpan)
指定した一致オプションとタイムアウト間隔を使用して、入力文字列内で、指定した正規表現に最初に一致する箇所を検索します。
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As Match
パラメーター
- input
- String
一致する対象を検索する文字列。
- pattern
- String
一致させる正規表現パターン。
- options
- RegexOptions
一致オプションを指定する列挙値のビットごとの組み合わせ。
- matchTimeout
- TimeSpan
タイムアウト期間、またはメソッドがタイムアウトしないことを示す InfiniteMatchTimeout。
戻り値
一致に関する情報を格納しているオブジェクト。
例外
正規表現の解析エラーが発生しました。
input
または pattern
が null
です。
タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。
注釈
メソッドは Match(String, String, RegexOptions, TimeSpan) 、入力文字列内の正規表現パターンに一致する最初の部分文字列を返します。 正規表現パターンの作成に使用される言語要素の詳細については、「正規表現 言語 - クイック リファレンス」を参照してください。
静的Match(String, String, RegexOptions, TimeSpan)メソッドは、 コンストラクターを使用してオブジェクトをRegex構築し、インスタンス Match(String) メソッドをRegex(String, RegexOptions, TimeSpan)呼び出すことと同じです。
パラメーターは pattern
、一致する文字列を記号的に記述する正規表現言語要素で構成されます。 正規表現の詳細については、「.NET 正規表現と正規表現言語 - クイック リファレンス」を参照してください。
返される Match オブジェクト Success の プロパティの値を調べて、入力文字列に正規表現パターンが見つかったかどうかを確認できます。 一致が見つかった場合、返される Match オブジェクトの Value プロパティには、正規表現パターンに一致する の input
部分文字列が含まれます。 一致するものが見つからない場合、その値は です String.Empty。
このメソッドは、正規表現パターンに一致する で input
見つかった最初の部分文字列を返します。 後続の一致を取得するには、返された Match オブジェクトの NextMatch メソッドを繰り返し呼び出します。 メソッドを呼び出すことで、1 つのメソッド呼び出しですべての一致を Regex.Matches(String, String, RegexOptions) 取得することもできます。
パラメーターは matchTimeout
、パターン マッチング メソッドがタイムアウトするまでに一致を検索しようとする時間を指定します。タイムアウト間隔を設定すると、過剰なバックトラッキングに依存する正規表現が、近い一致を含む入力を処理するときに応答を停止するように見えなくなります。 詳細については、「正規表現とバックトラッキングのベスト プラクティス」を参照してください。 その時間間隔で一致するものが見つからない場合、メソッドは例外を RegexMatchTimeoutException スローします。 matchTimeout
は、 メソッドが実行されるアプリケーション ドメインに対して定義されている既定のタイムアウト値をオーバーライドします。
注意 (呼び出し元)
パラメーターを適切な値 (2 秒など) に設定 matchTimeout
することをお勧めします。 を指定してタイムアウトを InfiniteMatchTimeout無効にすると、正規表現エンジンのパフォーマンスが若干向上します。 ただし、タイムアウトは次の条件でのみ無効にする必要があります。
正規表現によって処理される入力が既知の信頼できるソースから派生した場合、または静的テキストで構成されている場合。 これにより、ユーザーによって動的に入力されたテキストが除外されます。
正規表現パターンが十分にテストされ、一致、一致しない、近い一致が効率的に処理されるようにする場合。
正規表現パターンに、近い一致を処理するときに過剰なバックトラッキングを引き起こすことがわかっている言語要素が含まれない場合。