using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var line = "System.Action[Int32,Dictionary[Int32,Int32],Int32]";
var pattern = @"\w+(?:\.\w+)*\[(?:,?(?<res>\w+(?:\[[^][]*])?))*";
var result = Regex.Matches(line, pattern)
.Cast<Match>()
.SelectMany(x => x.Groups["res"].Captures.Cast<Capture>()
.Select(t => t.Value))
.ToList();
foreach (var s in result) // DEMO
Console.WriteLine(s);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBsaW5lID0gIlN5c3RlbS5BY3Rpb25bSW50MzIsRGljdGlvbmFyeVtJbnQzMixJbnQzMl0sSW50MzJdIjsKCQl2YXIgcGF0dGVybiA9IEAiXHcrKD86XC5cdyspKlxbKD86LD8oPzxyZXM+XHcrKD86XFtbXl1bXSpdKT8pKSoiOwoJCXZhciByZXN1bHQgPSBSZWdleC5NYXRjaGVzKGxpbmUsIHBhdHRlcm4pCgkJICAgICAgICAuQ2FzdDxNYXRjaD4oKQoJCSAgICAgICAgLlNlbGVjdE1hbnkoeCA9PiB4Lkdyb3Vwc1sicmVzIl0uQ2FwdHVyZXMuQ2FzdDxDYXB0dXJlPigpCgkJICAgICAgICAgICAgLlNlbGVjdCh0ID0+IHQuVmFsdWUpKQoJCSAgICAgICAgLlRvTGlzdCgpOwoJCWZvcmVhY2ggKHZhciBzIGluIHJlc3VsdCkgLy8gREVNTwoJCSAgICBDb25zb2xlLldyaXRlTGluZShzKTsKCX0KfQ==