I would like to match some pattern multiple times, exactly like described here.
^(somelongpattern[0-9])([,; ]+(?1))*$
This will match for e
In reviewing the Java documentation they still do not follow the PCRE guidelines for subroutines. Basically Java Regex does not support subroutines.
see also Java Regex Manual
The regex engine in Java does not support subroutines (as in PHP or Ruby).
Thus, you may work around it by defining the repeated subpatterns as separate variables and use them to build the final regex:
String block = "somelongpattern[0-9]";
String final_regex = "^(" + block + ")([,; ]+" + block + ")*$";
Or using String.format
:
String block = "somelongpattern[0-9]";
String final_regex = String.format("^(%1$s)([,; ]+%1$s)*$",block);
See the online demo.