Compartir vía


Regex.MatchTimeout Propiedad

Definición

Obtiene el intervalo de tiempo de espera de la instancia actual.

public:
 property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan

Valor de propiedad

Intervalo de tiempo máximo que puede transcurrir en una operación de coincidencia de modelos antes de que se produzca una RegexMatchTimeoutException o InfiniteMatchTimeout si se deshabilitan los tiempos de espera.

Comentarios

La MatchTimeout propiedad define el intervalo de tiempo máximo aproximado para que una Regex instancia ejecute una sola operación coincidente antes de que se agote el tiempo de espera de la operación. El motor de expresiones regulares produce una RegexMatchTimeoutException excepción durante la siguiente comprobación de tiempo después de que haya transcurrido el intervalo de tiempo de espera. Esto impide que el motor de expresiones regulares procese cadenas de entrada que requieran un retroceso excesivo. Para obtener más información, vea Backtracking and Best Practices for Regular Expressions.

Esta propiedad es de sólo lectura. Puede establecer su valor explícitamente para un objeto individual Regex llamando al Regex.Regex(String, RegexOptions, TimeSpan) constructor; y puede establecer su valor para todas las Regex operaciones coincidentes en un dominio de aplicación llamando al AppDomain.SetData método y proporcionando un TimeSpan valor para la propiedad "REGEX_DEFAULT_MATCH_TIMEOUT", como se muestra en el ejemplo siguiente.

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

Si no establece explícitamente un intervalo de tiempo de espera, se usa el valor Regex.InfiniteMatchTimeout predeterminado y las operaciones coincidentes no agota el tiempo de espera.

Se aplica a