Regex reuse a pattern to capture multiple groups?

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.

Leave a Comment