/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
class Ideone
{
{
final String functionNameRegex
= "^(\\w+(\\s+)?){2,}\\([^!@\\#$+%^]*\\)"; final String functionString
= "public void render(int screenNo, String infoText){}";
final Pattern fnPattern = Pattern.compile(functionNameRegex, Pattern.CASE_INSENSITIVE | Pattern.COMMENTS);
final Matcher fnMatcher = fnPattern.matcher(functionString);
while (fnMatcher.find()) {
System.
out.
println("Full match: " + fnMatcher.
group(0)); for (int i = 1; i <= fnMatcher.groupCount(); i++) {
System.
out.
println("Group " + i
+ ": " + fnMatcher.
group(i
)); }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlmaW5hbCBTdHJpbmcgZnVuY3Rpb25OYW1lUmVnZXggPSAiXihcXHcrKFxccyspPyl7Mix9XFwoW14hQFxcIyQrJV5dKlxcKSI7CgkJZmluYWwgU3RyaW5nIGZ1bmN0aW9uU3RyaW5nID0gInB1YmxpYyB2b2lkIHJlbmRlcihpbnQgc2NyZWVuTm8sIFN0cmluZyBpbmZvVGV4dCl7fSI7CgkJCQoJCWZpbmFsIFBhdHRlcm4gZm5QYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKGZ1bmN0aW9uTmFtZVJlZ2V4LCBQYXR0ZXJuLkNBU0VfSU5TRU5TSVRJVkUgfCBQYXR0ZXJuLkNPTU1FTlRTKTsKCQlmaW5hbCBNYXRjaGVyIGZuTWF0Y2hlciA9IGZuUGF0dGVybi5tYXRjaGVyKGZ1bmN0aW9uU3RyaW5nKTsKCgkJd2hpbGUgKGZuTWF0Y2hlci5maW5kKCkpIHsKCQkgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGdWxsIG1hdGNoOiAiICsgZm5NYXRjaGVyLmdyb3VwKDApKTsKCQkgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gZm5NYXRjaGVyLmdyb3VwQ291bnQoKTsgaSsrKSB7CgkJICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiR3JvdXAgIiArIGkgKyAiOiAiICsgZm5NYXRjaGVyLmdyb3VwKGkpKTsKCQkgICAgICAgfQoJCX0KCX0KfQ==