Regex.MatchTimeout 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取当前实例的超时间隔。
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
属性值
在 RegexMatchTimeoutException 引发之前或如果时间超期被禁用 InfiniteMatchTimeout ,在样式匹配操作符中可以经过的最长时间间隔。
注解
属性MatchTimeout定义实例在操作超时前执行单个匹配操作的大致最大时间间隔Regex。正则表达式引擎在超时间隔过后的下一个RegexMatchTimeoutException计时检查引发异常。 这可以防止正则表达式引擎处理需要过多回溯的输入字符串。 有关详细信息,请参阅正则表达式的回溯和最佳做法。
此属性为只读。 可以通过调用 Regex.Regex(String, RegexOptions, TimeSpan) 构造函数为单个Regex对象显式设置其值;可以通过调用 AppDomain.SetData 方法并为“REGEX_DEFAULT_MATCH_TIMEOUT”属性提供值TimeSpan来为应用程序域中的所有Regex匹配操作设置其值,如以下示例所示。
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
如果未显式设置超时间隔,则使用默认值 Regex.InfiniteMatchTimeout ,并且匹配的操作不会超时。