2017-08-01 235 views
-1

我想从下面的字符串和模式返回所有匹配。 我的预期结果是7组:e,f,e,g,e,e 但是,控制台打印:e,e。c#正则表达式返回所有匹配(字母范围)

我可以理解这种方法只返回第一个匹配,所以我只得到e。但为什么要打印两次?字母e在一个字符串中重复4次。

string text = "hello from the regex project"; 
string pattern = "([e-g])"; 

System.Text.RegularExpressions.Regex r = new 
System.Text.RegularExpressions.Regex(pattern,RegexOptions.IgnoreCase); 

Match m = r.Match(text); 


foreach (var item in m.Groups) 
{ 
    Console.WriteLine(item); 
} 

Console.ReadLine(); 
+3

你有两个组,0级和1。你只需要返回所有的事件?然后使用'Regex.Matches',然后抓住'match.Value's。 'Regex.Matches(text,@“(?i)[e-g]”)。演员()。选择(m => m.Value)' –

+0

@Wiktor谢谢并抱歉重复 – helpME1986

回答

0

你只取第一场比赛,你需要的所有比赛 类似的工作:

MatchCollection m = r.Matches(text); 

    foreach (var item in m) 
    { 
     Console.WriteLine(item); 
    }