Поделиться через


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.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 по умолчанию, а операции сопоставления не истекает.

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