Partage via


Regex.MatchTimeout Propriété

Définition

Obtient l'intervalle du délai d'attente de l'instance actuelle.

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

Valeur de propriété

Intervalle de temps maximum par défaut qui peut s'écouler lors d'une opération de correspondance de modèles avant qu'une RegexMatchTimeoutException soit levée, ou InfiniteMatchTimeout si les délais d'attente sont désactivés.

Remarques

La MatchTimeout propriété définit l’intervalle de temps maximal approximatif pour qu’un Regex instance exécute une seule opération de correspondance avant l’expiration de l’opération. Le moteur d’expression régulière lève une RegexMatchTimeoutException exception lors de son case activée de minutage suivant après l’expiration de l’intervalle de délai d’attente. Cela empêche le moteur d’expression régulière de traiter les chaînes d’entrée qui nécessitent un retour excessif. Pour plus d’informations, consultez Backtracking et Meilleures pratiques pour les expressions régulières.

Cette propriété est en lecture seule. Vous pouvez définir sa valeur explicitement pour un objet individuel Regex en appelant le Regex.Regex(String, RegexOptions, TimeSpan) constructeur ; et vous pouvez définir sa valeur pour toutes les Regex opérations de correspondance dans un domaine d’application en appelant la AppDomain.SetData méthode et en fournissant une TimeSpan valeur pour la propriété « REGEX_DEFAULT_MATCH_TIMEOUT », comme l’illustre l’exemple suivant.

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 vous ne définissez pas explicitement d’intervalle de délai d’attente, la valeur Regex.InfiniteMatchTimeout par défaut est utilisée et les opérations correspondantes n’expirent pas.

S’applique à