import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "<!ELEMENT\\s+\n"
+ "((?'elname'\\S+)\\s+)\n"
+ "((?'rank'\\d+)\\s+)?\n"
+ "(?'tagOmit'\n"
+ " (?'start'[-oO])\\s+\n"
+ " (?'end'[-oO])\\s+\n"
+ ")?\n"
+ "(?'content'\n"
+ " (?'keyword'(ANY|EMPTY|CDATA|RDATA))|\n"
+ " (?'contentGrp' \\(.*\\)[*+?]?)\n"
+ ")\n"
+ "(?'exceptions'\n"
+ " (\\s+\\-(?'exclusion'\\(.+\\)))?\n"
+ " (\\s+\\+(?'inclusion'\\(.+\\)))?\n"
+ ")\n"
+ "\\s*>";
final String string = "<!ELEMENT FTNOTE - - ((PARA | PARA-EFF-GROUP | PARA-EFF-CHOICE | TABLE | UN-LIST | NOTE | TABLE-EFF-GROUP | TABLE-EFF-CHOICE)+)\n"
+ " -(FTNOTE | NOTE | TABLE | GROUND-TEST | CORRECTIVE-ACTION)>\n"
+ "<!ELEMENT ENTRY - - (WARNING | CAUTION | NOTE | (PARA | UN-LIST | PARA-EFF-GROUP | PARA-EFF-CHOICE)*)\n"
+ " -(ENTRY | GRAPHIC-COLLECTION)\n"
+ " +(INFOMARK | FTNOTE-REF)>\n"
+ "<!ELEMENT COLSPEC - o EMPTY>\n"
+ "<!ELEMENT TGROUP - - (COLSPEC+, THEAD?, TBODY)>\n\n"
+ "<!ELEMENT TABLE - - (TITLE?, TGROUP, FTNOTE*)\n"
+ " -(TABLE | TABLE-NO-TITLE | GROUND-TEST | CORRECTIVE-ACTION)\n"
+ " +(INFOMARK | INCLUDED-SUBDOC | INCLUDED-SOURCE-DATA | EFF-NONE)>";
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