C#正则表达式引擎贪婪特性

C#正则表达式引擎贪婪特性,只要模式允许,它将匹配尽可能多的字符。通过在“重复描述字符”(*,+)后面添加“?”,可以将匹配模式改成非贪婪。请看以下示例:

Code  



string x = "Live for nothing,die for something";  




Regex r1 = new Regex(@".*thing");  



if (r1.IsMatch(x))  


{  


Console.WriteLine("match:" + r1.Match(x).Value);  


//输出:Live for nothing,die for something  


}  



Regex r2 = new Regex(@".*?thing");  



if (r2.IsMatch(x))  


{  


Console.WriteLine("match:" + r2.Match(x).Value);  


//输出:Live for nothing  


} 

使用“(?>…)”方式进行非回溯声明。由于C#正则表达式引擎的贪婪特性,导致它在某些情况下,将进行回溯以获得匹配,请看下面的示例:

相关推荐