string s = "[123,234,345,456,567,678,789,890,100]";
MatchCollection matches = Regex.Matches(s, @"(\d+)[,\]]");
string[] result = matches.OfType<Match>().Select(m => m.Groups[1].Value).ToArray();
ここで、@
はそのままの文字列リテラルを表すために使用され、エスケープ文字 '\' を正規表現表記で直接使用することを許可します。
\d
は\d+
数字です。1 つ以上の数字を意味します。括弧はグループを意味するので(\d+)
、数字のグループが必要です。(*少し後で使用されるグループを参照)
[,\]]
角括弧は、簡単に言えば、要素のいずれかを選択することを意味するため、エスケープする必要があったコンマ,
または角括弧のいずれかが選択されます。]
したがって、正規表現は、連続した数字の後に,
orが続く式を見つけます]
。Matches は一致のセットを返します (複数のセットがあるため、これを使用します)。次に、LINQ を使用して各一致を調べ、2 番目のグループであるインデックス 1 グループを取得します。1 つのグループのみを指定しました。最初のグループ (インデックス 0) は、正規表現の一致全体であり、この場合、必要のない,
orが含まれます。]