import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^((1(23)*23?|1(32)*32?)*1?|(2(13)*13?|2(31)*31?)*2?|(3(21)*21?|3(12)*12?)*3?)$";
final String string = "Allowed:\n"
+ "12\n"
+ "2\n"
+ "32132\n\n"
+ "123212\n"
+ "1321312312\n"
+ "1232123212321\n"
+ "32321232123232323213\n"
+ "21313131313131212312321231\n\n"
+ "Not Allowed:\n\n"
+ "11\n"
+ "22\n"
+ "33\n\n"
+ "113\n"
+ "1223\n"
+ "321233\n"
+ "13233232\n"
+ "23123232122";
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