import java.util.*;
import java.io.*;
import java.util.regex.*;
import java.util.List;
class Program {
String subject
= "somethingelse,case,test02,test03,exceptional,case,test04,exceptional,notcase"; Pattern regex = Pattern.compile("exceptional,case|(,)");
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
ICAgIGltcG9ydCBqYXZhLnV0aWwuKjsKICAgIGltcG9ydCBqYXZhLmlvLio7CiAgICBpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lio7CiAgICBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAgICAgCiAgICBjbGFzcyBQcm9ncmFtIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgl7CiAgICAgCiAgICBTdHJpbmcgc3ViamVjdCA9ICJzb21ldGhpbmdlbHNlLGNhc2UsdGVzdDAyLHRlc3QwMyxleGNlcHRpb25hbCxjYXNlLHRlc3QwNCxleGNlcHRpb25hbCxub3RjYXNlIjsKICAgIFBhdHRlcm4gcmVnZXggPSBQYXR0ZXJuLmNvbXBpbGUoImV4Y2VwdGlvbmFsLGNhc2V8KCwpIik7CiAgICBNYXRjaGVyIG0gPSByZWdleC5tYXRjaGVyKHN1YmplY3QpOwogICAgU3RyaW5nQnVmZmVyIGI9IG5ldyBTdHJpbmdCdWZmZXIoKTsKICAgIHdoaWxlIChtLmZpbmQoKSkgewogICAgaWYobS5ncm91cCgxKSAhPSBudWxsKSBtLmFwcGVuZFJlcGxhY2VtZW50KGIsICJAQFNwbGl0SGVyZUBAIik7CiAgICBlbHNlIG0uYXBwZW5kUmVwbGFjZW1lbnQoYiwgbS5ncm91cCgwKSk7CiAgICB9CiAgICBtLmFwcGVuZFRhaWwoYik7CiAgICBTdHJpbmcgcmVwbGFjZWQgPSBiLnRvU3RyaW5nKCk7CiAgICBTdHJpbmdbXSBzcGxpdHMgPSByZXBsYWNlZC5zcGxpdCgiQEBTcGxpdEhlcmVAQCIpOwogICAgZm9yIChTdHJpbmcgc3BsaXQgOiBzcGxpdHMpIFN5c3RlbS5vdXQucHJpbnRsbihzcGxpdCk7CiAgICB9IC8vIGVuZCBtYWluCiAgICB9IC8vIGVuZCBQcm9ncmFt