如何阻止这个正则表达式变得贪婪?

时间:2010-07-14 13:24:09

标签: c# regex

目前这个正则表达式返回一个匹配:

  

最好的语言   世界和最快的语言

如何让它返回两场比赛:

  

最好的语言

     

最快的语言

string text = "C# is the best language in the world and the fastest language in the world";
string search = @"\bthe\b.*\blanguage\b";
MatchCollection matches = Regex.Matches(text, search);
Console.WriteLine("{0} matches", matches.Count);
foreach (Match match in matches)
{
    Console.WriteLine("match '{0}' was found at index {1}", match.Value, match.Index);
}
Console.WriteLine("---");

3 个答案:

答案 0 :(得分:4)

?

之后添加*

答案 1 :(得分:3)

试试这个:

\bthe\b(?:(?!\bthe\b).)*\blanguage\b

它使用负前瞻断言来要求在匹配的“the”和“language”之间不再看到“the”。

答案 2 :(得分:0)

这符合您的要求

/the (?:best|fastest) language/g