using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string input = "Foo! The quick brown fox. Bar! ";
input = input + input + input + input; // repeated, each string takes about ~100ms
string pattern = @"([a-z ]+)+!";
var matchTimeout = TimeSpan.FromMilliseconds(150); // Decrease to ~100 to timeout
try
{
var result = Regex.Replace(input, pattern, "X",
RegexOptions.None,
matchTimeout);
Console.WriteLine("Result: " + result);
}
catch (RegexMatchTimeoutException ex)
{
Console.WriteLine("Match timed out!");
Console.WriteLine("- Timeout interval specified: " + ex.MatchTimeout);
Console.WriteLine("- Pattern: " + ex.Pattern);
Console.WriteLine("- Input: " + ex.Input);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJc3RyaW5nIGlucHV0ID0gIkZvbyEgVGhlIHF1aWNrIGJyb3duIGZveC4gQmFyISAiOwoJCWlucHV0ID0gaW5wdXQgKyBpbnB1dCArIGlucHV0ICsgaW5wdXQ7IC8vIHJlcGVhdGVkLCBlYWNoIHN0cmluZyB0YWtlcyBhYm91dCB+MTAwbXMKCQlzdHJpbmcgcGF0dGVybiA9IEAiKFthLXogXSspKyEiOwoJCXZhciBtYXRjaFRpbWVvdXQgPSBUaW1lU3Bhbi5Gcm9tTWlsbGlzZWNvbmRzKDE1MCk7IC8vIERlY3JlYXNlIHRvIH4xMDAgdG8gdGltZW91dAoJCXRyeQoJCXsKCQkgICAgdmFyIHJlc3VsdCA9IFJlZ2V4LlJlcGxhY2UoaW5wdXQsIHBhdHRlcm4sICJYIiwKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2V4T3B0aW9ucy5Ob25lLAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hUaW1lb3V0KTsKCQkgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlJlc3VsdDogIiArIHJlc3VsdCk7CgkJfQoJCWNhdGNoIChSZWdleE1hdGNoVGltZW91dEV4Y2VwdGlvbiBleCkKCQl7CgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKCJNYXRjaCB0aW1lZCBvdXQhIik7CgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKCItIFRpbWVvdXQgaW50ZXJ2YWwgc3BlY2lmaWVkOiAiICsgZXguTWF0Y2hUaW1lb3V0KTsKCQkgICAgQ29uc29sZS5Xcml0ZUxpbmUoIi0gUGF0dGVybjogIiArIGV4LlBhdHRlcm4pOwoJCSAgICBDb25zb2xlLldyaXRlTGluZSgiLSBJbnB1dDogIiArIGV4LklucHV0KTsKCQl9Cgl9Cn0=