using System; using System.Text.RegularExpressions; public class Test { public static void Main() { string msg= "{1,{Cat,{Blue,1}},2,{Dog,5}}"; msg = msg.Substring(1, msg.Length - 2); string[] charSetOccurences = Regex.Split(msg, @",(?=[^{}]*(?:(?:(?'O'{)[^{}]*)+(?:(?'-O'})[^{}]*?)+)*(?(O)(?!))$)"); foreach (string s in charSetOccurences) { Console.WriteLine(s); } } }