import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?P<mounting_type>Z)(?P<number_of_function>1)(?P<unit_type>S)(?P<unit_size>10)(?P<function_in_port>A|B|P|TA|TB)(?P<cracking_pressure>00|05|30|50)(?P<sep_1>-)(?P<mounting_position>1|2)(?P<orific_position_1>D|)(?P<orific_diameter_1>05|10|15|)(?P<function_in_port_2>B|P|TA|TB|)(?P<cracking_pressure_rv2>00|05|30|50|)(?P<sep_2>-|)(?P<mounting_position_rv2>1|2|)(?P<orific_position_2>D|)(?P<orific_diameter_2>05|10|15|)(?P<function_in_port_3>TA9|TB9|)(?P<sep_3>-)(?P<unit_series>4X)(?P<sep_4>/)(?P<seal_material>F|N)(?P<sep_5>/|)(?P<control_volume_flow>XY|)(?P<inspection_port>MA|MB|MP|MTA|)(?P<inspection_port_position>A|B|)(?P<surface_coating>J3|)(?P<sep_6>-|)(?P<special_version>068|120|)(?P<additional_details>(.|[0-9])*)$\n";
final String string = "Z1S10TA30-2TB9-4X/F\n"
+ "Z1S10TA50-2TB9-4X/F\n"
+ "Z1S10A30-2-4X/F\n"
+ "Z1S10A50-2-4X/F\n"
+ "Z1S10B30-2-4X/F\n"
+ "Z1S10A30-1-4X/F\n"
+ "Z1S10P30-1-4X/F\n"
+ "Z1S10P50-1-4X/F\n"
+ "Z1S10A30-2B30-2-4X/F\n"
+ "Z1S10A50-2B50-2-4X/F\n"
+ "Z1S10P30-1TA30-2TB9-4X/F\n"
+ "Z1S10P05-1-4X/F/MPB-068\n"
+ "Z1S10P05-1-4X/F/XY\n"
+ "Z1S10A05-1-4X/F/XY\n"
+ "Z1S10P05-1-4X/F\n"
+ "Z1S10TA05-2TB9-4X/F\n"
+ "Z1S10A05-2-4X/F\n"
+ "Z1S10A05-1-4X/F\n"
+ "Z1S10B05-1-4X/F\n"
+ "Z1S10B05-2-4X/F\n"
+ "Z1S10A05-2B05-2-4X/F\n"
+ "Z1S10P05-1TA05-2TB9-4X/F\n"
+ "Z1S10TA05-2TB9-4X/N\n"
+ "Z1S10TA50-2TB9-4X/N\n"
+ "Z1S10TA05-2TB05-2-4X/F/XY\n"
+ "Z1S10P05-1-4X/F/MPB\n"
+ "Z1S10P05-2-4X/F\n"
+ "Z1S10TA50-2TB9-4X/F-120\n"
+ "Z1S10A50-1-4X/F\n"
+ "Z1S10B30-1-4X/F\n"
+ "Z1S10B50-1-4X/F\n"
+ "Z1S10B50-2-4X/F\n"
+ "Z1S10P05-1TA50-2TB9-4X/F\n"
+ "Z1S10P30-1-4X/F/MPB-068\n"
+ "Z1S10P05-1-4X/N\n"
+ "Z1S10P50-1TA50-2TB9-4X/F\n"
+ "Z1S10P50-1-4X/F/XY\n"
+ "Z1S10TA05-2TB9-4X/F-120\n"
+ "Z1S10A05-2B05-2TB9-4X/F\n"
+ "Z1S10TA30-2TB9-4X/F-120\n"
+ "Z1S10P00-1-4X/F\n"
+ "Z1S10TB30-2-4X/F\n"
+ "Z1S10P00-1-4X/F/MPB-068\n"
+ "Z1S10TA05-2TB30-2-4X/N\n"
+ "Z1S10TA30-2TB30-2-4X/N\n"
+ "Z1S10TA30-2TB30-2-4X/F\n"
+ "Z1S10TA50-2TB50-2-4X/F\n"
+ "Z1S10P05-1TA05-2TB9-4X/N\n"
+ "Z1S10B05-2-4X/F/XY\n"
+ "Z1S10P30-1-4X/F/XY\n"
+ "Z1S10TA50-2TB50-2-4X/F/XY\n"
+ "Z1S10TA05-2TB05-2-4X/F\n"
+ "Z1S10P30-1-4X/F/J3\n"
+ "Z1S10P05-1TA05-2-4X/F/XY\n"
+ "Z1S10A05-2B05-2-4X/F/XY\n"
+ "Z1S10A30-2-4X/N\n"
+ "Z1S10TA00-2TB9-4X/F/J3\n"
+ "Z1S10P05-1TA30-2TB9-4X/F/J3\n"
+ "Z1S10B05-1-4X/N\n"
+ "Z1S10A05-2-4X/N\n"
+ "Z1S10B05-2-4X/N\n"
+ "Z1S10P50-1-4X/N\n"
+ "Z1S10TA30-2TB9-4X/N\n"
+ "Z1S10B05-1D15-4X/F\n"
+ "Z1S10TA05-2TB9-4X/F/J3\n"
+ "Z1S10TA05-2-4X/F\n"
+ "Z1S10TB05-1-4X/F/XY\n"
+ "Z1S10TA05-1-4X/F/XY\n"
+ "Z1S10P05-2-4X/F/XY\n"
+ "Z1S10P00-1-4X/F/MPB\n"
+ "Z1S10B00-2-4X/F\n"
+ "Z1S10TA00-2TB00-2-4X/F\n"
+ "Z1S10B00-1-4X/F\n"
+ "Z1S10TA50-2TB50-2-4X/N\n"
+ "Z1S10B05-1-4X/F/XY\n"
+ "Z1S10A00-2B00-2-4X/F\n"
+ "Z1S10TB05-2-4X/F\n";
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