Regex.MatchTimeout Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft das Timeoutintervall der aktuellen Instanz ab.
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
Eigenschaftswert
Das maximale Zeitintervall, das in einem Musterabgleichsvorgang vor dem RegexMatchTimeoutException Auslösen verstrichen werden kann, oder InfiniteMatchTimeout wenn Timeouts deaktiviert sind.
Hinweise
Die MatchTimeout Eigenschaft definiert das ungefähre maximale Zeitintervall für eine Regex Instanz, um einen einzelnen Abgleichsvorgang auszuführen, bevor der Vorgang timeout ist. Das Modul für reguläre Ausdrücke löst eine RegexMatchTimeoutException Ausnahme während der nächsten Zeitüberprüfung aus, nachdem das Timeoutintervall abgelaufen ist. Dadurch wird verhindert, dass das Reguläre Ausdrucksmodul Eingabezeichenfolgen verarbeitet, die eine übermäßige Rückverfolgung erfordern. Weitere Informationen finden Sie unter "Backtracking " und " Best Practices for Regular Expressions".
Diese Eigenschaft ist schreibgeschützt. Sie können den Wert für ein einzelnes Regex Objekt explizit festlegen, indem Sie den Regex.Regex(String, RegexOptions, TimeSpan) Konstruktor aufrufen. Sie können den Wert für alle Regex Abgleichsvorgänge in einer Anwendungsdomäne festlegen, indem Sie die AppDomain.SetData Methode aufrufen und einen TimeSpan Wert für die Eigenschaft "REGEX_DEFAULT_MATCH_TIMEOUT" angeben, wie das folgende Beispiel veranschaulicht.
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
Wenn Sie kein Timeoutintervall explizit festlegen, wird der Standardwert Regex.InfiniteMatchTimeout verwendet, und übereinstimmende Vorgänge führen kein Timeout aus.