import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?>^|\\s+|\\W)\n"
+ " (\n"
+ " (?>[a-z]\\d*|\\d+[a-z]?\n"
+ " (?>\\(\n"
+ " ([a-z]\\d*|\\d+[a-z]?)\n"
+ " \\)[a-z]?\n"
+ " )?)\n"
+ " (?>\\.(?>[a-z]|\\d+[a-z]?))*\n"
+ " |\n"
+ " (?>M{0,4}(?>CM|CD|D?C{0,3})(?>XC|XL|L?X{0,3})(?>IX|IV|V?I{0,3}))\n"
+ " )\n"
+ "(?>\\s+|\\W|$)";
final String string = "Appendix 1\n"
+ "6.48\n"
+ "CP 198\n"
+ "3.2.4 G\n"
+ "2\n"
+ "1.\n"
+ "B.\n"
+ "Appendix 1\n"
+ "Annex A\n"
+ "4A.10.1 and 4A.15\n"
+ "4A.21.10\n"
+ "Annex ii\n"
+ "A)\n"
+ "SECTION IV\n"
+ "52.19A\n"
+ "PRACTICE DIRECTION 83—\n"
+ "RSC ORDER 109\n"
+ "Rule 4\n"
+ "ADMINISTRATIVE COURT GUIDANCE\n"
+ "PRACTICE STATEMENT\n"
+ "THE PROTOCOL\n"
+ "C.6\n"
+ "Draft modules\n"
+ "CIS11:\n"
+ "Appendix 13(2)e\n"
+ "2002 no.\n"
+ "(a)\n"
+ "L7.3.1.R\n"
+ "(iii)\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | 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