讓我們這個代碼片斷正則表達式來獲取所有匹配的位置
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
讓我們這個代碼片斷正則表達式來獲取所有匹配的位置
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
使用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();
代替Match
,使用Matches
方法獲取多個匹配一氣呵成:
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;
}
@WouterHuysentruit不,他的意思是'foreach(比賽匹配)'。 –
是的,謝謝。最終的結果是一樣的,你可以用不同的方式達到同樣的目標。 – Szymon
名單應該有一個NextMatch方法 –
就個人而言,我寧願做兩個裂口(一個在'Environment.Newline',一個在':')比在這裏使用正則表達式。 –
你可以使用'Matches'而不是'Match'。 –