Regex.MatchTimeout 屬性

定義

取得目前執行個體的逾時間隔。

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

屬性值

RegexMatchTimeoutException擲回之前,可在模式比對作業中流逝的最大時間間隔,或者為InfiniteMatchTimeout(如果停用逾時)。

備註

屬性 MatchTimeout 會定義實例在作業逾時之前執行單一比對作業的 Regex 大約時間間隔上限。正則運算式引擎會在逾時間隔經過之後,在其下一 RegexMatchTimeoutException 次計時檢查期間擲回例外狀況。 這可防止正則運算式引擎處理需要過多回溯的輸入字串。 如需詳細資訊,請參閱正則運算式的回溯和最佳做法。

這個屬性是唯讀的。 您可以藉由呼叫 Regex.Regex(String, RegexOptions, TimeSpan) 建構函式來明確設定個別 Regex 物件的值;您可以呼叫 AppDomain.SetData 方法,並為應用程式域中的所有 Regex 相符作業設定其值,並提供 TimeSpan 「REGEX_DEFAULT_MATCH_TIMEOUT」 屬性的值,如下列範例所示。

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 ,而且比對作業不會逾時。

適用於