import java.util.*;
import java.io.*;
import java.util.regex.*;
import java.util.List;
class Program {
String subject
= "a=1,b=\"1,2,3\",c=[d=1,e=\"1,11\"]"; Pattern regex = Pattern.compile("\\[[^]]*\\]|\"[^\"]*\"|(,)");
Matcher m = regex.matcher(subject);
while (m.find()) {
if(m.group(1) != null) m.appendReplacement(b, "@@SplitHere@@");
else m.appendReplacement(b, m.group(0));
}
m.appendTail(b);
String replaced
= b.
toString(); String[] splits
= replaced.
split("@@SplitHere@@"); } // end main
} // end Program
ICAgIGltcG9ydCBqYXZhLnV0aWwuKjsKICAgIGltcG9ydCBqYXZhLmlvLio7CiAgICBpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lio7CiAgICBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAgICAgCiAgICBjbGFzcyBQcm9ncmFtIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgl7CiAgICAgCiAgICBTdHJpbmcgc3ViamVjdCA9ICJhPTEsYj1cIjEsMiwzXCIsYz1bZD0xLGU9XCIxLDExXCJdIjsKICAgIFBhdHRlcm4gcmVnZXggPSBQYXR0ZXJuLmNvbXBpbGUoIlxcW1teXV0qXFxdfFwiW15cIl0qXCJ8KCwpIik7CiAgICBNYXRjaGVyIG0gPSByZWdleC5tYXRjaGVyKHN1YmplY3QpOwogICAgU3RyaW5nQnVmZmVyIGI9IG5ldyBTdHJpbmdCdWZmZXIoKTsKICAgIHdoaWxlIChtLmZpbmQoKSkgewogICAgaWYobS5ncm91cCgxKSAhPSBudWxsKSBtLmFwcGVuZFJlcGxhY2VtZW50KGIsICJAQFNwbGl0SGVyZUBAIik7CiAgICBlbHNlIG0uYXBwZW5kUmVwbGFjZW1lbnQoYiwgbS5ncm91cCgwKSk7CiAgICB9CiAgICBtLmFwcGVuZFRhaWwoYik7CiAgICBTdHJpbmcgcmVwbGFjZWQgPSBiLnRvU3RyaW5nKCk7CiAgICBTdHJpbmdbXSBzcGxpdHMgPSByZXBsYWNlZC5zcGxpdCgiQEBTcGxpdEhlcmVAQCIpOwogICAgZm9yIChTdHJpbmcgc3BsaXQgOiBzcGxpdHMpIFN5c3RlbS5vdXQucHJpbnRsbihzcGxpdCk7CiAgICB9IC8vIGVuZCBtYWluCiAgICB9IC8vIGVuZCBQcm9ncmFt