import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?'DrawingNumber'^P\\d{5}-\\d{2}-TP\\d{2}-\\d{3})-?(?'Hand'L|R)?-?(?'Dimensions'(-?\\d{2,})*)-?(?'Type'1|2)?$";
final String string = "P01867-13-TP09-001-4950-1775-1175-895-1125-835\n"
+ "FAIL01867-13-TP09-001-4950-1775-1175-895-1125-835\n\n"
+ "P01867-13-TP09-002-4950-1775-1045-895-1035\n"
+ "P01867-13-TP09-002---4950-1775-1045-895-1035\n\n"
+ "P01867-13-TP02-019-L-1137-275-852-102\n"
+ "P-13-TP02-019-L-1137-275-852-102\n\n"
+ "P01867-13-TP02-019-L-1137-275-852-102\n"
+ "P01867-13-TP02-019-L-1137-275-852-102-failure\n\n"
+ "P01867-13-TP02-019-R-1137-275-852-102\n"
+ "P01867-13-TP02-021-L-1137-1055-1372\n"
+ "P01867-13-TP02-021-L-1137-535-1027\n"
+ "P01867-13-TP02-021-L-1137-795-1184\n"
+ "P01867-13-TP02-021-R-1137-1055-1372\n"
+ "P01867-13-TP02-021-R-1137-535-1027\n"
+ "P01867-13-TP02-021-R-1137-795-1184\n"
+ "P01867-13-TP02-025-L-1137-1315-1581\n"
+ "P01867-13-TP02-025-R-1137-1315-1581\n"
+ "P01867-13-TP03-005\n"
+ "P01867-13-TP02-019-L-1137-275\n"
+ "P01867-13-TP02-019-R-1137-275\n"
+ "P01867-13-TP02-019-R-1137\n"
+ "P01867-13-TP02-019-L-1137\n\n"
+ "P01867-13-TP09-001-4950-1775-1175-895-1125-835-000-001-002-003-004-005-006-007\n\n"
+ "P01867-13-TP02-019-L-1137-275-852-102\n"
+ "P01867-13-TP02-019-R-1137-275-852-102\n"
+ "P01867-13-TP02-021-L-1137-1055-1372\n"
+ "P01867-13-TP02-021-L-1137-535-1027\n"
+ "P01867-13-TP02-021-L-1137-795-1184\n"
+ "P01867-13-TP02-021-R-1137-1055-1372\n"
+ "P01867-13-TP02-021-R-1137-535-1027\n"
+ "P01867-13-TP02-021-R-1137-795-1184\n"
+ "P01867-13-TP02-025-L-1137-1315-1581\n"
+ "P01867-13-TP02-025-R-1137-1315-1581\n"
+ "P01867-13-TP03-005\n"
+ "P01867-13-TP04-003-180-56\n"
+ "P01867-13-TP05-001-L-953\n"
+ "P01867-13-TP05-001-R-953\n"
+ "P01867-13-TP07-001-1073-1103\n"
+ "P01867-13-TP07-001-707-737\n"
+ "P01867-13-TP07-001-874-904\n"
+ "P01867-13-TP07-002-1289-1329\n"
+ "P01867-13-TP08-002-1302-1296\n"
+ "P01867-13-TP08-003-1317-1307-263\n"
+ "P01867-13-TP09-001-4950-1775-1175-895-1125-835\n"
+ "P01867-13-TP09-002-4950-1775-1045-895-1035\n"
+ "P01867-13-TP09-002-4950-1775-1110-895-1100\n"
+ "P01867-13-TP09-002-4950-1775-915-895-905\n"
+ "P01867-13-TP09-002-4950-1775-980-895-970\n"
+ "P01867-13-TP11-003\n"
+ "P01867-13-TP11-005-200\n"
+ "P01867-13-TP11-009-200\n"
+ "P01867-13-TP11-013\n"
+ "P01867-13-TP14-001-L-251-126\n"
+ "P01867-13-TP14-001-R-251-126\n"
+ "P01867-13-TP14-003-781\n"
+ "P01867-13-TP16-001-L-1772-157\n"
+ "P01867-13-TP16-001-R-1772-157\n"
+ "P01867-13-TP16-002-1397-157\n"
+ "P01867-13-TP17-001-L-728-921\n"
+ "P01867-13-TP17-001-R-728-921\n"
+ "P01867-13-TP17-011-748-91\n"
+ "P01867-13-TP17-016-748-91\n"
+ "P01867-13-TP20-010-L\n"
+ "P01867-13-TP20-010-R\n"
+ "P01867-13-TP20-014-L\n"
+ "P01867-13-TP20-014-R\n"
+ "P01867-13-TP02-047-1\n"
+ "P01867-13-TP02-047-2";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
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