Aracılığıyla paylaş


Regex.MatchTimeout Özellik

Tanım

Geçerli örneğin zaman aşımı aralığını alır.

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

Özellik Değeri

Bir oluşturmadan önce RegexMatchTimeoutException desen eşleştirme işleminde geçen veya InfiniteMatchTimeout zaman aşımları devre dışı bırakıldığında en uzun zaman aralığı.

Açıklamalar

özelliği, MatchTimeout bir Regex örneğin işlem zaman aşımına uğramadan önce tek bir eşleştirme işlemi yürütmesi için yaklaşık maksimum zaman aralığını tanımlar. Normal ifade altyapısı, zaman aşımı aralığı geçtikten sonra sonraki zamanlama denetimi sırasında bir RegexMatchTimeoutException özel durum oluşturur. Bu, normal ifade altyapısının aşırı geri izleme gerektiren giriş dizelerini işlemesini engeller. Daha fazla bilgi için bkz. Normal İfadeler içinGeri İzleme ve En İyi Yöntemler.

Bu özellik salt okunur durumdadır. Oluşturucuyu çağırarak tek Regex bir nesne için değerini açıkça ayarlayabilirsiniz; yöntemini çağırarak AppDomain.SetData ve aşağıdaki örnekte gösterildiği gibi "REGEX_DEFAULT_MATCH_TIMEOUT" özelliği için bir TimeSpan değer sağlayarak bir uygulama etki alanındaki tüm Regex eşleşen işlemler için değerini ayarlayabilirsinizRegex.Regex(String, RegexOptions, TimeSpan).

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

Zaman aşımı aralığını açıkça ayarlamazsanız, varsayılan değer Regex.InfiniteMatchTimeout kullanılır ve eşleşen işlemler zaman aşımına ulanmaz.

Şunlara uygulanır