Ler em inglês

Partilhar via


Regex.MatchTimeout Propriedade

Definição

Obtém o intervalo de tempo limite da instância atual.

C#
public TimeSpan MatchTimeout { get; }

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.

C#
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

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.

Aplica-se a

Produto Versões
.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, 10
.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