using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string msg= "(ed) (Karlsruhe Univ. (TH) (Germany, F.R.))";
var charSetOccurences = new Regex(@"\(((?:[^()]|(?<o>\()|(?<-o>\)))+(?(o)(?!)))\)");
var charSetMatches = charSetOccurences.Matches(msg);
foreach (Match match in charSetMatches)
{
Console.WriteLine(match.Groups[1].Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsgICAKICAgICAgICBzdHJpbmcgbXNnPSAiKGVkKSAoS2FybHNydWhlIFVuaXYuIChUSCkgKEdlcm1hbnksIEYuUi4pKSI7CiAgICAgICAgdmFyIGNoYXJTZXRPY2N1cmVuY2VzID0gbmV3IFJlZ2V4KEAiXCgoKD86W14oKV18KD88bz5cKCl8KD88LW8+XCkpKSsoPyhvKSg/ISkpKVwpIik7CiAgICAgICAgdmFyIGNoYXJTZXRNYXRjaGVzID0gY2hhclNldE9jY3VyZW5jZXMuTWF0Y2hlcyhtc2cpOwogICAgICAgIGZvcmVhY2ggKE1hdGNoIG1hdGNoIGluIGNoYXJTZXRNYXRjaGVzKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUobWF0Y2guR3JvdXBzWzFdLlZhbHVlKTsKICAgICAgICB9CiAgICB9Cn0=