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