Regex.MatchTimeout Proprietà

Definizione

Ottiene l'intervallo di timeout dell'istanza corrente.

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

Valore della proprietà

Intervallo di tempo massimo che può trascorrere in un'operazione di criteri di ricerca prima che venga generata un'eccezione RegexMatchTimeoutException o InfiniteMatchTimeout se i timeout sono disabilitati.

Commenti

La MatchTimeout proprietà definisce l'intervallo di tempo massimo approssimativo per un'istanza Regex per eseguire una singola operazione di corrispondenza prima del timeout dell'operazione. Il motore di espressioni regolari genera un'eccezione RegexMatchTimeoutException durante il controllo di intervallo successivo dopo che l'intervallo di timeout è trascorso. Ciò impedisce al motore di espressioni regolari di elaborare stringhe di input che richiedono un backtracking eccessivo. Per altre informazioni, vedere Backtracking and Best Practices for Regular Expressions (Procedure consigliate per le espressioni regolari).

Questa proprietà è di sola lettura. È possibile impostare il valore in modo esplicito per un singolo Regex oggetto chiamando il Regex.Regex(String, RegexOptions, TimeSpan) costruttore. È possibile impostare il relativo valore per tutte le Regex operazioni corrispondenti in un dominio applicazione chiamando il AppDomain.SetData metodo e fornendo un TimeSpan valore per la proprietà "REGEX_DEFAULT_MATCH_TIMEOUT", come illustrato nell'esempio seguente.

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 non si imposta in modo esplicito un intervallo di timeout, viene usato il valore Regex.InfiniteMatchTimeout predefinito e le operazioni di corrispondenza non timeout.

Si applica a