using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string input = "((isoCode=s)||(isoCode=a))&&(title=s)&&((ti=2)&&(t=2))||(t=2&&e>5)";
string pattern = @"\(((?>\((?<DEPTH>)|\)(?<-DEPTH>)|.?)*(?(DEPTH)(?!)))\)|&{2}|\|{2}";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine(match.Groups[1].Success ? match.Groups[1].Value : match.Groups[0].Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJc3RyaW5nIGlucHV0ID0gIigoaXNvQ29kZT1zKXx8KGlzb0NvZGU9YSkpJiYodGl0bGU9cykmJigodGk9MikmJih0PTIpKXx8KHQ9MiYmZT41KSI7CgkgICAgc3RyaW5nIHBhdHRlcm4gPSBAIlwoKCg/PlwoKD88REVQVEg+KXxcKSg/PC1ERVBUSD4pfC4/KSooPyhERVBUSCkoPyEpKSlcKXwmezJ9fFx8ezJ9IjsKCSAgICBNYXRjaENvbGxlY3Rpb24gbWF0Y2hlcyA9IFJlZ2V4Lk1hdGNoZXMoaW5wdXQsIHBhdHRlcm4pOwoJICAgIGZvcmVhY2ggKE1hdGNoIG1hdGNoIGluIG1hdGNoZXMpCgkgICAgewoJICAgICAgICBDb25zb2xlLldyaXRlTGluZShtYXRjaC5Hcm91cHNbMV0uU3VjY2VzcyA/IG1hdGNoLkdyb3Vwc1sxXS5WYWx1ZSA6IG1hdGNoLkdyb3Vwc1swXS5WYWx1ZSk7CgkgICAgfQoJfQp9