Regex.Matches无法找到多个匹配项

时间:2017-05-28 19:40:17

标签: c# regex

尝试在一段文本中查找多个匹配项时遇到了问题。该文本具有以下格式:

string text = "#IDENTIFIER http://www.link1.com #IDENTIFIER http://www.link2.org #IDENTIFIER http://www.link3.com #IDENTIFIER http://www.link4.net";

我的目标是从中提取每个 #IDENTIFIER链接事件,我使用以下代码执行此操作:

string pat = @"(#IDENTIFIER)(.*)\.(com|org|net)";
MatchCollection matches = Regex.Matches(text, pat);
foreach(Match match in matches) {
    Console.WriteLine("'{0}' found at index {1}.", match.Value, match.Index);
}

问题是,它返回一个匹配而不是4.为什么忽略中间模式?

你知道我错过了吗?

1 个答案:

答案 0 :(得分:1)

这是因为.*本身通常是贪婪的。而是尝试使用.*?

string pat = @"(#IDENTIFIER)(.*?)\.(com|org|net)";