/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String str
= "String prefix without commas, variable length remainder with optional suffix (optional suffix)"; Pattern ptrn = Pattern.compile("^([^,]*),([^()]*)(\\s*\\(.*\\))?$");
Matcher matcher = ptrn.matcher(str);
while (matcher.find()) {
System.
out.
println("First group: " + matcher.
group(1) + "\nSecond group: " + matcher.group(1)
+ (matcher.group(3) != null ? "\nThrid group: " + matcher.group(3) : ""));
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgc3RyID0gIlN0cmluZyBwcmVmaXggd2l0aG91dCBjb21tYXMsIHZhcmlhYmxlIGxlbmd0aCByZW1haW5kZXIgd2l0aCBvcHRpb25hbCBzdWZmaXggKG9wdGlvbmFsIHN1ZmZpeCkiOwogICAgCVBhdHRlcm4gcHRybiA9IFBhdHRlcm4uY29tcGlsZSgiXihbXixdKiksKFteKCldKikoXFxzKlxcKC4qXFwpKT8kIik7CiAgICAJTWF0Y2hlciBtYXRjaGVyID0gcHRybi5tYXRjaGVyKHN0cik7CiAgICAJd2hpbGUgKG1hdGNoZXIuZmluZCgpKSB7CiAgICAJCVN5c3RlbS5vdXQucHJpbnRsbigiRmlyc3QgZ3JvdXA6ICIgKyBtYXRjaGVyLmdyb3VwKDEpCiAgICAJCSAgICAgICAgICAgICAgKyAiXG5TZWNvbmQgZ3JvdXA6ICIgKyBtYXRjaGVyLmdyb3VwKDEpIAogICAgCQkgICAgICAgICAgICAgKyAobWF0Y2hlci5ncm91cCgzKSAhPSBudWxsID8gIlxuVGhyaWQgZ3JvdXA6ICIgKyBtYXRjaGVyLmdyb3VwKDMpIDogIiIpKTsKICAgIAl9Cgl9Cn0=