using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
Regex re = new Regex(
@"([^(]+|"+
@"\([^(]*(?:\([^(]*(?:\([^(]*\)[^(]*)*\)[^(]*)*\)"+
@")"
); // Closes capture group
string sInput = "herpdediderp (orange,(hmm)) some other crap (red,hmm)"+
"buzz (blue,(hmmm) (damn) derp) (hi)";
List<string> sResult = re.Split(sInput).Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
Console.WriteLine("1:" + string.Join("\n", sResult));
sInput = "herpdediderp (orange,(hmm)) some other crap (red,hmm)"+
"buzz (blue,((hmmm) (damn) derp)) (hi)";
sResult = re.Split(sInput).Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
Console.WriteLine("2:" + string.Join("\n", sResult));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgewogICAgUmVnZXggcmUgPSBuZXcgUmVnZXgoCglAIihbXihdK3wiKwoJQCJcKFteKF0qKD86XChbXihdKig/OlwoW14oXSpcKVteKF0qKSpcKVteKF0qKSpcKSIrCglAIikiCiAgICk7CQkJLy8gQ2xvc2VzIGNhcHR1cmUgZ3JvdXAKICAgIHN0cmluZyBzSW5wdXQgPSAiaGVycGRlZGlkZXJwIChvcmFuZ2UsKGhtbSkpIHNvbWUgb3RoZXIgY3JhcCAocmVkLGhtbSkiKwogICAgICAgICAgICAgICAgICAgICJidXp6IChibHVlLChobW1tKSAoZGFtbikgZGVycCkgKGhpKSI7CiAgICBMaXN0PHN0cmluZz4gc1Jlc3VsdCA9IHJlLlNwbGl0KHNJbnB1dCkuV2hlcmUocyA9PiAhc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzKSkuVG9MaXN0KCk7CiAgICAKICAgIENvbnNvbGUuV3JpdGVMaW5lKCIxOiIgKyBzdHJpbmcuSm9pbigiXG4iLCBzUmVzdWx0KSk7CgogICAgc0lucHV0ID0gImhlcnBkZWRpZGVycCAob3JhbmdlLChobW0pKSBzb21lIG90aGVyIGNyYXAgKHJlZCxobW0pIisKICAgICAgICAgICAgICAgICAgICAiYnV6eiAoYmx1ZSwoKGhtbW0pIChkYW1uKSBkZXJwKSkgKGhpKSI7CiAgICBzUmVzdWx0ID0gcmUuU3BsaXQoc0lucHV0KS5XaGVyZShzID0+ICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHMpKS5Ub0xpc3QoKTsKICAgIAogICAgQ29uc29sZS5Xcml0ZUxpbmUoIjI6IiArIHN0cmluZy5Kb2luKCJcbiIsIHNSZXN1bHQpKTsKICB9Cn0=