import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?:(public|protected|private)\\s+)|(?:(abstract|static)\\s+)|(?:(final)\\s+)|(?:(volatile|synchronized)\\s+)|(?:(native|strictfp)\\s+))*([a-zA-Z_][[:alnum:]]+)\\s+([a-zA-Z_][[:word:]<>\\[\\]]+)\\s*\\(\\s*(?:(?:([a-zA-Z_][[:word:]<>\\[\\]]+)\\s+([a-zA-Z_][[:alnum:]]+)\\s*)(?:,\\s*([a-zA-Z_][[:word:]<>\\[\\]]+)\\s+([a-zA-Z_][[:alnum:]]+)\\s*)*)?\\)\\s*\\{";
final String string = "cat\n"
+ "cut\n"
+ " cot\n"
+ "c@t$\n"
+ "c?t\n"
+ "c t?\n"
+ " caut.\n"
+ "caat\n"
+ "cuut!\n"
+ " hello\n"
+ "hello world\n"
+ "lite.ral $ sign\n"
+ "lit\\erbl ^ car[a]t\n"
+ "Robert\n"
+ "Bob\n"
+ "Rob\n"
+ "Rick\n"
+ "Rick\n"
+ "lo\n"
+ "lol\n"
+ "loll\n"
+ "lolll\n"
+ "lollll\n"
+ "lolllll\n"
+ "lollllll\n"
+ "lolllllll\n"
+ "lollllllll\n"
+ "lolllllllll\n"
+ "lollllllllll\n"
+ "lolllllllllll\n"
+ "lollllllllllll\n"
+ "while (a < b) { while (c < d) { --d;}; while (b < c) { ++a; --c; } }\n"
+ "10001\n"
+ "18052\n"
+ "19146\n"
+ "<b>thing</a>\n"
+ "+1 555-234-1234 == matches\n"
+ "(654) 999-0234 == matches\n"
+ "+1 (101) 234 9838 == matches\n"
+ "333 444.5555 == matches\n"
+ "111.234-3463 == matches\n"
+ "+1-333-333-3333 == doesn't match (drops the +1)\n"
+ "555 2341234 == doesn't match (missing a separator)\n"
+ "231-1115 == doesn't match (missing an area code)\n"
+ "doowopdoo\n"
+ "shoobeedoobee\n"
+ "doodoodoo\n"
+ "doowop\n"
+ "0\n"
+ "C\n"
+ "a@b.c\n"
+ "bob@bob.bob\n"
+ "steve@steve.co.uk\n"
+ "tom.jones@its.not.unusual\n"
+ "0.0\n"
+ "+.03\n"
+ "-100.3\n"
+ "4.5e5\n"
+ "+0.03e-9\n"
+ ".01e12\n"
+ ".e4\n"
+ "-.e\n\n"
+ "public static void main(String[] args) {\n"
+ " return;\n"
+ "}\n\n"
+ "private double thingDoer (int thingA , float thingB) {\n"
+ " while (thingA < thingB) { ++thingA; }\n"
+ " return thingA * thingB;\n"
+ "}\n\n"
+ "boolean blobber(){\n"
+ " // do blob things\n"
+ " return false;\n"
+ "}\n\n"
+ "invalidMethodSignature here{\n"
+ " return;\n"
+ "}\n\n"
+ "anotherInvalidOne(){ return; }";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html