正则表达式获得所有匹配的位置

Nam*_* VU 3 c# regex

我们来看看这段代码

var input = @"
a:1
b:22

a:3
b:44
";

var pattern = @"b:([^\n]+)\n";
var match = Regex.Match(input, pattern);
Run Code Online (Sandbox Code Playgroud)

我得到的结果是在下面的快照.

我们怎样才能获得b例如{22,44} 的值列表?

我只能看到22.

在此输入图像描述

Szy*_*mon 6

而不是Match使用Matches方法一次获得多个匹配:

var matches = Regex.Matches(input, pattern);

for (int i = 0; i < matches.Count; i++ )
{
    var value = matches[i].Value;
}
Run Code Online (Sandbox Code Playgroud)

或使用foreach语法:

foreach (Match match in matches)
{
    var value = match.Value;
}
Run Code Online (Sandbox Code Playgroud)


mez*_*tou 5

使用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);
Run Code Online (Sandbox Code Playgroud)

如果你想要一个匹配值列表

Regex.Matches(input, pattern).Select(m => m.Value).ToList();
Run Code Online (Sandbox Code Playgroud)