让我们看一下这段代码片段
var input = @"
a:1
b:22
a:3
b:44
";
var pattern = @"b:([^\n]+)\n";
var match = Regex.Match(input, pattern);
我在匹配中得到的结果如下图所示。
我们如何获取b
的值列表,例如{22, 44}?
我只能看到22。
使用Matches
方法而不是Match
方法来一次性获取多个匹配项:
var matches = Regex.Matches(input, pattern);
for (int i = 0; i < matches.Count; i++ )
{
var value = matches[i].Value;
}
或者使用foreach
语法:
foreach (Match match in matches)
{
var value = match.Value;
}
foreach (Match match in matches)
。 - Uwe Keim使用 Regex.Matches
方法代替 Regex.Match
。以下是来自 MSDN 的示例:
string pattern = "a*";
string input = "abaabb";
foreach (Match m in Regex.Matches(input, pattern))
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
如果您需要一个匹配值列表:
Regex.Matches(input, pattern).Select(m => m.Value).ToList();
Environment.Newline
处,一次在:
处),而不是使用正则表达式。 - Uwe KeimMatches
代替Match
。 - Uwe Keim