Regex.MatchTimeout プロパティ

定義

現在のインスタンスのタイムアウト間隔を取得します。Gets the time-out interval of the current instance.

public:
 property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan

プロパティ値

RegexMatchTimeoutException がスローされる前に、パターン一致操作で経過できる最大時間間隔。タイムアウトが無効な場合は InfiniteMatchTimeoutThe maximum time interval that can elapse in a pattern-matching operation before a RegexMatchTimeoutException is thrown, or InfiniteMatchTimeout if time-outs are disabled.

注釈

プロパティMatchTimeoutは、操作がタイムアウトする前に単一Regexの一致操作を実行するインスタンスのおおよその最大時間間隔を定義します。正規表現エンジンは、タイムアウトRegexMatchTimeoutException間隔が経過した後の次のタイミングチェック中に例外をスローします。The MatchTimeout property defines the approximate maximum time interval for a Regex instance to execute a single matching operation before the operation times out. The regular expression engine throws a RegexMatchTimeoutException exception during its next timing check after the time-out interval has elapsed. これにより、正規表現エンジンは、過度なバックトラッキングを必要とする入力文字列を処理できなくなります。This prevents the regular expression engine from processing input strings that require excessive backtracking. 詳細については、「正規表現のバックトラッキングとベストプラクティス」を参照してください。For more information, see Backtracking and Best Practices for Regular Expressions.

このプロパティは読み取り専用です。This property is read-only. コンストラクターをRegex Regex AppDomain.SetData呼び出すことによって、個々のオブジェクトに対して値を明示的に設定できます。また、メソッドを呼び出して、 Regex.Regex(String, RegexOptions, TimeSpan)TimeSpan次の例に示すように、"REGEX_DEFAULT_MATCH_TIMEOUT" プロパティの値。You can set its value explicitly for an individual Regex object by calling the Regex.Regex(String, RegexOptions, TimeSpan) constructor; and you can set its value for all Regex matching operations in an application domain by calling the AppDomain.SetData method and providing a TimeSpan value for the "REGEX_DEFAULT_MATCH_TIMEOUT" property, as the following example illustrates.

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が使用され、照合操作はタイムアウトしません。If you do not explicitly set a time-out interval, the default value Regex.InfiniteMatchTimeout is used, and matching operations do not time out.

適用対象