Regex.MatchTimeout Свойство

Определение

Получает интервал времени ожидания текущего экземпляра.

public TimeSpan MatchTimeout { get; }

Значение свойства

Максимальный интервал времени, который может пройти в операции сравнения с шаблоном, прежде чем возникнет исключение 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

Если интервал времени ожидания явно не задан, используется значение Regex.InfiniteMatchTimeout по умолчанию, а операции сопоставления не истекает.

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

Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0