Regex.MatchTimeout Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá časový limit interval aktuální instance.
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
Hodnota vlastnosti
Maximální časový interval, který může uplynout v operaci porovnávání vzorů před vyvolání objektu RegexMatchTimeoutException nebo InfiniteMatchTimeout před zakázáním časového limitu.
Poznámky
Vlastnost MatchTimeout definuje přibližný maximální časový interval, Regex po který má instance provést jednu odpovídající operaci před vypršením časového limitu operace. Modul regulárních výrazů RegexMatchTimeoutException vyvolá výjimku při další kontrole časování po uplynutí intervalu časového limitu. To zabrání modulu regulárních výrazů ve zpracování vstupních řetězců, které vyžadují nadměrné navracení. Další informace najdete v tématu Zpětné navracení a osvědčené postupy pro regulární výrazy.
Tato vlastnost je jen ke čtení. Můžete nastavit jeho hodnotu explicitně pro jednotlivý Regex objekt voláním konstruktoru Regex.Regex(String, RegexOptions, TimeSpan) ; a můžete nastavit jeho hodnotu pro všechny Regex odpovídající operace v doméně aplikace voláním AppDomain.SetData metody a poskytnutím TimeSpan hodnoty pro "REGEX_DEFAULT_MATCH_TIMEOUT" vlastnost, jak je znázorněno v následujícím příkladu.
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
Pokud explicitně nenastavíte interval časového limitu, použije se výchozí hodnota Regex.InfiniteMatchTimeout a odpovídající operace nevyvolá časový limit.