Regex.MatchTimeout Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan interval waktu habis instans saat ini.
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
Nilai Properti
Interval waktu maksimum yang dapat berlalu dalam operasi pencocokan pola sebelum RegexMatchTimeoutException dilemparkan, atau InfiniteMatchTimeout jika waktu habis dinonaktifkan.
Keterangan
Properti MatchTimeout menentukan perkiraan interval waktu maksimum untuk Regex instans untuk menjalankan satu operasi yang cocok sebelum waktu operasi habis. Mesin ekspresi reguler memberikan RegexMatchTimeoutException pengecualian selama pemeriksaan waktu berikutnya setelah interval waktu habis berlalu. Ini mencegah mesin ekspresi reguler memproses string input yang memerlukan backtracking yang berlebihan. Untuk informasi selengkapnya, lihat Backtracking dan Praktik Terbaik untuk Ekspresi Reguler.
Properti ini bersifat hanya baca. Anda dapat mengatur nilainya secara eksplisit untuk objek individual Regex dengan memanggil Regex.Regex(String, RegexOptions, TimeSpan) konstruktor; dan Anda dapat mengatur nilainya untuk semua Regex operasi yang cocok dalam domain aplikasi dengan memanggil AppDomain.SetData metode dan memberikan TimeSpan nilai untuk properti "REGEX_DEFAULT_MATCH_TIMEOUT", seperti yang diilustrasikan contoh berikut.
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
Jika Anda tidak secara eksplisit mengatur interval waktu habis, nilai Regex.InfiniteMatchTimeout default digunakan, dan operasi yang cocok tidak kehabisan waktu.