問題は.
あなたのパターンにあります。正規表現言語では、.
文字は任意の文字に一致するため (単一行モードを除く)、\
ピリオドのみに一致する文字でエスケープする必要があります。
代わりにこれを試してください:
private static Regex MRDNumbers = new Regex(@"((\d+\.?){2,})+");
リスト内の一致するすべての番号を取得するには、次のようにします。
private Regex MRDNumbers = new Regex(@"(\d+?)(?:\.(\d+))+");
string input = "Above includes - Add/Remove Member To/From Nested Group - 1.24.12 / 1.24.13";
MRDNumbers.Matches(input).Cast<Match>().Dump();
var list =
(from m in MRDNumbers.Matches(input).Cast<Match>()
select
from g in m.Groups.Cast<Group>().Skip(1)
from c in g.Captures.Cast<Capture>()
select c.Value)
.ToList();
// [ [ 1, 24, 12 ], [ 1, 24, 12 ] ]
または流暢な構文で:
var list =
MRDNumbers.Matches(input).Cast<Match>()
.Select(m => m.Groups.Cast<Group>()
.Skip(1)
.SelectMany(g => g.Captures.Cast<Capture>())
.Select(c => c.Value))
.ToList();