Regex.MatchTimeout Regex.MatchTimeout Regex.MatchTimeout Regex.MatchTimeout Property

Определение

Получает интервал времени ожидания текущего экземпляра.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, или InfiniteMatchTimeout, если контроль времени ожидания отключен.The maximum time interval that can elapse in a pattern-matching operation before a RegexMatchTimeoutException is thrown, or InfiniteMatchTimeout if time-outs are disabled.

Комментарии

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

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