import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^IMD(?:\\+.*?){3}(?::.*?){3}(?<desc>[^:+']*)";
final String string = "LIN+00010++079790040080030:SA' \n"
+ "PIA+1+079790040080030:SA' \n"
+ "IMD+F++:::DIN 7979 D Stahl blank | 8x30 Zylin' \n"
+ "QTY+12:10,000:PCE' \n"
+ "PRI+AAA:23,56:::100:PCE' \n"
+ "SCC+1' \n"
+ "QTY+1:10,000:+::' \n"
+ "DTM+2:20200223:102' \n"
+ "LIN+00020++079790040080040:SA' \n"
+ "PIA+1+079790040080040:SA' \n"
+ "IMD+F++:::DIN 7979 D Stahl blank | 8x40 Zylin' \n"
+ "QTY+12:10,000:PCE' \n"
+ "PRI+AAA:24,58:::100:PCE' \n"
+ "SCC+1' \n"
+ "QTY+1:10,000' \n"
+ "DTM+2:20200223:102' \n"
+ "LIN+00030++009128009060016:SA' \n"
+ "PIA+1+009128009060016:SA' \n"
+ "IMD+F++:::DIN 912 Stahl 8.8 blank | M6x16 Zyl' \n"
+ "QTY+12:100,000:PCE' \n"
+ "PRI+AAA:2,36:::100:PCE' \n"
+ "SCC+1' \n"
+ "QTY+1:100,000' \n"
+ "DTM+2:20200223:102' \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