import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?m)^(?=(?:(?:(?(1)(?!))(.)|(?(2)(?!))(?!\\1)(.)|(?(3)(?!))(?!\\1|\\2)(.)|(?(4)(?!))(?!\\1|\\2|\\3)(.)|(?(5)(?!))(?!\\1|\\2|\\3|\\4)(.)|(?(6)(?!))(?!\\1|\\2|\\3|\\4|\\5)(.)|(?(7)(?!))(?!\\1|\\2|\\3|\\4|\\5|\\6)(.)|(?(8)(?!))(?!\\1|\\2|\\3|\\4|\\5|\\6|\\7)(.)|(?(9)(?!))(?!\\1|\\2|\\3|\\4|\\5|\\6|\\7|\\8)(.))\\S*?){1,9}$)(?=(?:\\1|\\2|\\3|\\4|\\5|\\6|\\7|\\8|\\9)*$)(?(DEFINE)(?<one>(?:(?!\\1).)*\\1)(?<two>(?:(?!\\2).)*\\2)(?<three>(?:(?!\\3).)*\\3)(?<four>(?:(?!\\4).)*\\4)(?<five>(?:(?!\\5).)*\\5)(?<six>(?:(?!\\6).)*\\6)(?<seven>(?:(?!\\7).)*\\7)(?<eight>(?:(?!\\8).)*\\8)(?<nine>(?:(?!\\9).)*\\9))(?:(?(1)(?=(?&one){1}(?!.*\\1))(?(2)(?=(?&two){1}(?!.*\\2))(?(3)(?=(?&three){1}(?!.*\\3))(?(4)(?=(?&four){1}(?!.*\\4))(?(5)(?=(?&five){1}(?!.*\\5))(?(6)(?=(?&six){1}(?!.*\\6))(?(7)(?=(?&seven){1}(?!.*\\7))(?(8)(?=(?&eight){1}(?!.*\\8))(?(9)(?=(?&nine){1}(?!.*\\9)))))))))))|(?(1)(?=(?&one){2}(?!.*\\1))(?(2)(?=(?&two){2}(?!.*\\2))(?(3)(?=(?&three){2}(?!.*\\3))(?(4)(?=(?&four){2}(?!.*\\4))(?(5)(?=(?&five){2}(?!.*\\5))(?(6)(?=(?&six){2}(?!.*\\6))(?(7)(?=(?&seven){2}(?!.*\\7))(?(8)(?=(?&eight){2}(?!.*\\8))(?(9)(?=(?&nine){2}(?!.*\\9)))))))))))|(?(1)(?=(?&one){3}(?!.*\\1))(?(2)(?=(?&two){3}(?!.*\\2))(?(3)(?=(?&three){3}(?!.*\\3))(?(4)(?=(?&four){3}(?!.*\\4))(?(5)(?=(?&five){3}(?!.*\\5))(?(6)(?=(?&six){3}(?!.*\\6))(?(7)(?=(?&seven){3}(?!.*\\7))(?(8)(?=(?&eight){3}(?!.*\\8))(?(9)(?=(?&nine){3}(?!.*\\9)))))))))))|(?(1)(?=(?&one){4}(?!.*\\1))(?(2)(?=(?&two){4}(?!.*\\2))(?(3)(?=(?&three){4}(?!.*\\3))(?(4)(?=(?&four){4}(?!.*\\4))(?(5)(?=(?&five){4}(?!.*\\5))(?(6)(?=(?&six){4}(?!.*\\6))(?(7)(?=(?&seven){4}(?!.*\\7))(?(8)(?=(?&eight){4}(?!.*\\8))(?(9)(?=(?&nine){4}(?!.*\\9)))))))))))|(?(1)(?=(?&one){5}(?!.*\\1))(?(2)(?=(?&two){5}(?!.*\\2))(?(3)(?=(?&three){5}(?!.*\\3))(?(4)(?=(?&four){5}(?!.*\\4))(?(5)(?=(?&five){5}(?!.*\\5))(?(6)(?=(?&six){5}(?!.*\\6))(?(7)(?=(?&seven){5}(?!.*\\7))(?(8)(?=(?&eight){5}(?!.*\\8))(?(9)(?=(?&nine){5}(?!.*\\9)))))))))))|(?(1)(?=(?&one){6}(?!.*\\1))(?(2)(?=(?&two){6}(?!.*\\2))(?(3)(?=(?&three){6}(?!.*\\3))(?(4)(?=(?&four){6}(?!.*\\4))(?(5)(?=(?&five){6}(?!.*\\5))(?(6)(?=(?&six){6}(?!.*\\6))(?(7)(?=(?&seven){6}(?!.*\\7))(?(8)(?=(?&eight){6}(?!.*\\8))(?(9)(?=(?&nine){6}(?!.*\\9)))))))))))|(?(1)(?=(?&one){7}(?!.*\\1))(?(2)(?=(?&two){7}(?!.*\\2))(?(3)(?=(?&three){7}(?!.*\\3))(?(4)(?=(?&four){7}(?!.*\\4))(?(5)(?=(?&five){7}(?!.*\\5))(?(6)(?=(?&six){7}(?!.*\\6))(?(7)(?=(?&seven){7}(?!.*\\7))(?(8)(?=(?&eight){7}(?!.*\\8))(?(9)(?=(?&nine){7}(?!.*\\9)))))))))))|(?(1)(?=(?&one){8}(?!.*\\1))(?(2)(?=(?&two){8}(?!.*\\2))(?(3)(?=(?&three){8}(?!.*\\3))(?(4)(?=(?&four){8}(?!.*\\4))(?(5)(?=(?&five){8}(?!.*\\5))(?(6)(?=(?&six){8}(?!.*\\6))(?(7)(?=(?&seven){8}(?!.*\\7))(?(8)(?=(?&eight){8}(?!.*\\8))(?(9)(?=(?&nine){8}(?!.*\\9)))))))))))|(?(1)(?=(?&one){9}(?!.*\\1))(?(2)(?=(?&two){9}(?!.*\\2))(?(3)(?=(?&three){9}(?!.*\\3))(?(4)(?=(?&four){9}(?!.*\\4))(?(5)(?=(?&five){9}(?!.*\\5))(?(6)(?=(?&six){9}(?!.*\\6))(?(7)(?=(?&seven){9}(?!.*\\7))(?(8)(?=(?&eight){9}(?!.*\\8))(?(9)(?=(?&nine){9}(?!.*\\9)))))))))))).*";
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);
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