Regex.MatchTimeout プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在のインスタンスのタイムアウト間隔を取得します。
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
プロパティ値
RegexMatchTimeoutException がスローされる前に、パターン一致操作で経過できる最大時間間隔。タイムアウトが無効な場合は InfiniteMatchTimeout。
注釈
プロパティはMatchTimeout、インスタンスが操作がタイムアウトする前に 1 つの一致する操作を実行するためのおおよその最大時間間隔Regexを定義します。正規表現エンジンは、RegexMatchTimeoutExceptionタイムアウト間隔が経過した後チェック次のタイミングで例外をスローします。 これにより、正規表現エンジンは、過剰なバックトラッキングを必要とする入力文字列を処理できなくなります。 詳細については、「正規表現の バックトラッキング と ベスト プラクティス」を参照してください。
このプロパティは読み取り専用です。 コンストラクターを呼び出Regex.Regex(String, RegexOptions, TimeSpan)すことで、その値を個々Regexのオブジェクトに対して明示的に設定できます。次の例に示すように、 メソッドを呼び出AppDomain.SetDataし、"REGEX_DEFAULT_MATCH_TIMEOUT" プロパティの値をTimeSpan指定することで、アプリケーション ドメイン内のすべてのRegex一致する操作の値を設定できます。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
AppDomain domain = AppDomain.CurrentDomain;
// Set a timeout interval of 2 seconds.
domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(2));
Object timeout = domain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT");
Console.WriteLine("Default regex match timeout: {0}",
timeout == null ? "<null>" : timeout);
Regex rgx = new Regex("[aeiouy]");
Console.WriteLine("Regular expression pattern: {0}", rgx.ToString());
Console.WriteLine("Timeout interval for this regex: {0} seconds",
rgx.MatchTimeout.TotalSeconds);
}
}
// The example displays the following output:
// Default regex match timeout: 00:00:02
// Regular expression pattern: [aeiouy]
// Timeout interval for this regex: 2 seconds
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim domain As AppDomain = AppDomain.CurrentDomain
' Set a timeout interval of 2 seconds.
domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(2))
Dim timeout As Object = domain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT")
Console.WriteLine("Default regex match timeout: {0}",
If(timeout Is Nothing, "<null>", timeout))
Dim rgx As New Regex("[aeiouy]")
Console.WriteLine("Regular expression pattern: {0}", rgx.ToString())
Console.WriteLine("Timeout interval for this regex: {0} seconds",
rgx.MatchTimeout.TotalSeconds)
End Sub
End Module
' The example displays the following output:
' Default regex match timeout: 00:00:02
' Regular expression pattern: [aeiouy]
' Timeout interval for this regex: 2 seconds
タイムアウト間隔を明示的に設定しない場合、既定値 Regex.InfiniteMatchTimeout が使用され、一致する操作はタイムアウトしません。
適用対象
.NET