Regex.MatchTimeout Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém o intervalo de tempo limite da instância atual.
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
Valor da propriedade
O intervalo de tempo máximo que pode decorrer em uma operação de correspondência de padrão antes que uma RegexMatchTimeoutException seja lançada ou InfiniteMatchTimeout se os tempos limite estão desabilitados.
Comentários
A MatchTimeout propriedade define o intervalo de tempo máximo aproximado para uma Regex instância executar uma única operação de correspondência antes do tempo limite da operação. O mecanismo de expressão regular gera uma RegexMatchTimeoutException exceção durante seu próximo intervalo marcar após o intervalo de tempo limite ter decorrido. Isso impede que o mecanismo de expressão regular processe cadeias de caracteres de entrada que exigem retrocesso excessivo. Para obter mais informações, consulte Retrocesso e práticas recomendadas para expressões regulares.
Esta propriedade é somente para leitura. Você pode definir seu valor explicitamente para um objeto individual Regex chamando o Regex.Regex(String, RegexOptions, TimeSpan) construtor e pode definir seu valor para todas as Regex operações correspondentes em um domínio de aplicativo chamando o AppDomain.SetData método e fornecendo um TimeSpan valor para a propriedade "REGEX_DEFAULT_MATCH_TIMEOUT", como ilustra o exemplo a seguir.
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
Se você não definir explicitamente um intervalo de tempo limite, o valor Regex.InfiniteMatchTimeout padrão será usado e as operações correspondentes não esgotarão o tempo limite.