import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?m)\n"
+ "^ \n"
+ "(?=\n"
+ " (?:\n"
+ " (?:\n"
+ " (?(1) (?!) )\n"
+ " ( . ) # (1)\n"
+ " | (?(2) (?!) )\n"
+ " (?! \\1 )\n"
+ " ( . ) # (2)\n"
+ " | (?(3) (?!) )\n"
+ " (?! \\1 | \\2 )\n"
+ " ( . ) # (3)\n"
+ " | (?(4) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 )\n"
+ " ( . ) # (4)\n"
+ " | (?(5) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 | \\4 )\n"
+ " ( . ) # (5)\n"
+ " | (?(6) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 | \\4 | \\5 )\n"
+ " ( . ) # (6)\n"
+ " | (?(7) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 )\n"
+ " ( . ) # (7)\n"
+ " | (?(8) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 | \\7 )\n"
+ " ( . ) # (8)\n"
+ " | (?(9) (?!) )\n"
+ " (?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 | \\7 | \\8 )\n"
+ " ( . ) # (9)\n"
+ " )\n"
+ " \\S*? \n"
+ " ){1,9}\n"
+ " $ \n"
+ ")\n\n"
+ "(?= (?: \\1|\\2|\\3|\\4|\\5|\\6|\\7|\\8|\\9 )* $ )\n\n"
+ "(?(DEFINE)\n"
+ " (?<one> # (10)\n"
+ " (?: (?! \\1 ) . )*\n"
+ " \\1 \n"
+ " ) \n"
+ " (?<two> # (11)\n"
+ " (?: (?! \\2 ) . )*\n"
+ " \\2 \n"
+ " ) \n"
+ " (?<three> # (12)\n"
+ " (?: (?! \\3 ) . )*\n"
+ " \\3 \n"
+ " ) \n"
+ " (?<four> # (13)\n"
+ " (?: (?! \\4 ) . )*\n"
+ " \\4 \n"
+ " ) \n"
+ " (?<five> # (14)\n"
+ " (?: (?! \\5 ) . )*\n"
+ " \\5 \n"
+ " ) \n"
+ " (?<six> # (15)\n"
+ " (?: (?! \\6 ) . )*\n"
+ " \\6 \n"
+ " ) \n"
+ " (?<seven> # (16)\n"
+ " (?: (?! \\7 ) . )*\n"
+ " \\7 \n"
+ " ) \n"
+ " (?<eight> # (17)\n"
+ " (?: (?! \\8 ) . )*\n"
+ " \\8 \n"
+ " ) \n"
+ " (?<nine> # (18)\n"
+ " (?: (?! \\9 ) . )*\n"
+ " \\9 \n"
+ " ) \n"
+ ")\n\n"
+ "(?: ### Times Table 9 x 9 = 81 max char string\n\n"
+ " # 1 \n"
+ " (?(1) (?= (?&one) {1} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {1} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){1} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {1} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {1} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {1} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){1} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){1} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {1} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 2 \n"
+ " (?(1) (?= (?&one) {2} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {2} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){2} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {2} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {2} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {2} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){2} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){2} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {2} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 3 \n"
+ " (?(1) (?= (?&one) {3} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {3} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){3} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {3} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {3} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {3} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){3} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){3} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {3} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 4 \n"
+ " (?(1) (?= (?&one) {4} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {4} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){4} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {4} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {4} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {4} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){4} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){4} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {4} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 5 \n"
+ " (?(1) (?= (?&one) {5} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {5} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){5} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {5} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {5} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {5} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){5} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){5} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {5} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 6 \n"
+ " (?(1) (?= (?&one) {6} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {6} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){6} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {6} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {6} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {6} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){6} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){6} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {6} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 7 \n"
+ " (?(1) (?= (?&one) {7} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {7} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){7} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {7} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {7} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {7} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){7} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){7} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {7} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 8 \n"
+ " (?(1) (?= (?&one) {8} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {8} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){8} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {8} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {8} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {8} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){8} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){8} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {8} (?! .* \\9 ))\n"
+ " )))))))))\n\n"
+ " | # 9 \n"
+ " (?(1) (?= (?&one) {9} (?! .* \\1 ))\n"
+ " (?(2) (?= (?&two) {9} (?! .* \\2 ))\n"
+ " (?(3) (?= (?&three){9} (?! .* \\3 ))\n"
+ " (?(4) (?= (?&four) {9} (?! .* \\4 ))\n"
+ " (?(5) (?= (?&five) {9} (?! .* \\5 ))\n"
+ " (?(6) (?= (?&six) {9} (?! .* \\6 ))\n"
+ " (?(7) (?= (?&seven){9} (?! .* \\7 ))\n"
+ " (?(8) (?= (?&eight){9} (?! .* \\8 ))\n"
+ " (?(9) (?= (?&nine) {9} (?! .* \\9 ))\n"
+ " )))))))))\n"
+ ")\n"
+ ".*";
final String string = "------------------------------\n"
+ "match_words = \n"
+ "------------------------------\n"
+ "arraigning\n"
+ "nonordered\n"
+ "abadbacdcacbdbdc\n"
+ "mesosome\n"
+ "ananna\n"
+ "unendued\n"
+ "tromometer\n"
+ "caucasus\n"
+ "intestines\n"
+ "i\n"
+ "deed\n"
+ "horseshoer\n"
+ "happenchance\n"
+ "reappear\n"
+ "deeded\n"
+ "pullup\n"
+ "arraigning\n"
+ "testes\n"
+ "mononymy\n"
+ "scintillescent\n"
+ "couscous\n\n"
+ "------------------------------\n"
+ "not_match_words = \n"
+ "------------------------------\n"
+ "edified\n"
+ "unreverberating\n"
+ "underpass\n"
+ "interinsert\n"
+ "pilfered\n"
+ "nippiness\n"
+ "gregarinian\n"
+ "deicide\n"
+ "nonaristocratic\n"
+ "rototiller\n"
+ "ozonizing\n"
+ "museums\n"
+ "backbreaker\n"
+ "interradiated\n"
+ "antistalling\n"
+ "naturalize\n"
+ "equitriangular\n"
+ "reparticipate\n"
+ "ppd\n"
+ "miasmas\n"
+ "cabbage\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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