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 проверка времени после истечения интервала ожидания. Это не позволяет обработчику регулярных выражений обрабатывать входные строки, требующие чрезмерного отслеживания. Дополнительные сведения см. в разделе Backtracking and Best Practices for Regular Expressions.

Это свойство доступно только для чтения. Его значение можно задать явно для отдельного Regex объекта путем вызова Regex.Regex(String, RegexOptions, TimeSpan) конструктора, а также задать его значение для всех Regex операций сопоставления в домене приложения, вызвав AppDomain.SetData метод и указав 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 по умолчанию, а операции сопоставления не истекает.

Применяется к