using System;
using System.Text.RegularExpressions;
using System.IO;
using System.Linq;
public class Test
{
public static void Main()
{
var input = "abc(test)def(rst(another test)uv)xy";
var regex = new Regex(@"(?=(\(([^()]+| (?<Level>\()| (?<-Level>\)))+(?(Level)(?!))\)))", RegexOptions.IgnorePatternWhitespace);
var results = regex.Matches(input).Cast<Match>()
.Select(p => p.Groups[1].Value)
.ToList();
Console.WriteLine(String.Join(", ", results));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5JTzsKdXNpbmcgU3lzdGVtLkxpbnE7CnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgaW5wdXQgPSAiYWJjKHRlc3QpZGVmKHJzdChhbm90aGVyIHRlc3QpdXYpeHkiOwoJCXZhciByZWdleCA9IG5ldyBSZWdleChAIig/PShcKChbXigpXSt8ICg/PExldmVsPlwoKXwgKD88LUxldmVsPlwpKSkrKD8oTGV2ZWwpKD8hKSlcKSkpIiwgUmVnZXhPcHRpb25zLklnbm9yZVBhdHRlcm5XaGl0ZXNwYWNlKTsKCQl2YXIgcmVzdWx0cyA9IHJlZ2V4Lk1hdGNoZXMoaW5wdXQpLkNhc3Q8TWF0Y2g+KCkKCQkgICAgICAgICAgICAgICAuU2VsZWN0KHAgPT4gcC5Hcm91cHNbMV0uVmFsdWUpCgkJICAgICAgICAgICAgICAgLlRvTGlzdCgpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKFN0cmluZy5Kb2luKCIsICIsIHJlc3VsdHMpKTsKCX0KfQ==