using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var pattern = "^{(?:(?<c>[^{}]+)|(?<o>{)|(?<-o>}))*(?(o)(?!))}$";
var result = Regex.Matches("{a{bb{ccc{dd}}}}", pattern)
.Cast<Match>().Select(p => p.Groups["c"].Captures)
.ToList();
foreach (var coll in result)
foreach (var v in coll)
Console.WriteLine(v);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgCXZhciBwYXR0ZXJuID0gIl57KD86KD88Yz5bXnt9XSspfCg/PG8+eyl8KD88LW8+fSkpKig/KG8pKD8hKSl9JCI7CiAgICAJdmFyIHJlc3VsdCA9IFJlZ2V4Lk1hdGNoZXMoInthe2Jie2NjY3tkZH19fX0iLCBwYXR0ZXJuKQogICAgCSAgICAgICAgICAuQ2FzdDxNYXRjaD4oKS5TZWxlY3QocCA9PiBwLkdyb3Vwc1siYyJdLkNhcHR1cmVzKQogICAgCSAgICAgICAgICAuVG9MaXN0KCk7CiAgICAgICAgZm9yZWFjaCAodmFyIGNvbGwgaW4gcmVzdWx0KQogICAgICAgICAgIGZvcmVhY2ggKHZhciB2IGluIGNvbGwpCiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKHYpOwoJfQp9