Partilhar via


Regex.MatchTimeout Propriedade

Definição

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.

Aplica-se a