import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?i)^(01|04|21|31)(\\d{10})?(\\d{1}>)(\\d{16,27})\\+\\s+(\\d{5,9})>";
final String string = "0100003949753>210000000003139471430009017+ 010001628>\n"
+ "0100000023651>000551106208600215460130935+ 010058907>\n"
+ "2100000440001>961116900000006600000009284+ 030001625>\n"
+ "042>000000676817431677100399580+ 010107280>\n"
+ "319>961116900000006600000009284+ 030001625>\n\n"
+ "Absichtliche Fehler;\n"
+ "-0100003949753>210000000003139471430009017+ 010001628>\n"
+ "0100-000023651>000551106208600215460130935+ 010058907>\n"
+ "2100000440001>9611169000000006600000009284+ 030001625>\n"
+ "042>00000067681743167710.0399580+ 010107280>\n"
+ "319>961116900000006600000009284+ 030001.625>\n"
+ " 0100003949753>210000000003139471430009017+ 010001628>\n\n\n\n"
+ "#1: ESR 9/27, CHF 3949.75, Ref 210000000003139471430009017, Tn 010001628 (01-162-8)\n"
+ "#2: ESR 9/27, CHF 23.65, Ref 000551106208600215460130935, Tn 010058907 (01-5890-7)\n"
+ "#3: ESR 9/27, EUR 440.00, Ref 961116900000006600000009284, Tn 030001625 (03-162-5)\n"
+ "#4: ESR+ 9/27+ CHF ?? Ref 000000676817431677100399580, Tn 010107280 (01-10728-0)\n"
+ "#5: ESR+ 9/27+ EUR ??.?? Ref 961116900000006600000009284, Tn 030001625 (03-162-5)\n\n\n"
+ "ESR oder ESR+\n\n"
+ "Gruppe1:\n"
+ "01 = ESR in CHF\n"
+ "04 = ESR+ in CHF\n"
+ "21 = ESR in EUR\n"
+ "31 = ESR+ in EUR\n"
+ "Nicht beachtet:\n"
+ "11 = ESR in CHF zur Gutschrift auf das eigene Konto\n"
+ "14 = ESR+ in CHF zur Gutschrift auf das eigene Konto\n"
+ "23 = ESR in EUR zur Gutschrift auf das eigene Konto\n"
+ "33 = ESR+ in EUR zur Gutschrift auf das eigene Konto\n\n"
+ "Gruppe2: Betrag (bei ESR+ nicht vorhanden/leer)\n"
+ "Gruppe3: Prüfcode\n"
+ "Gruppe4: Referenznummer\n"
+ "Gruppe5: Kundennummer \n"
+ "VVXXXXXXP> VV = ESR-Code, XXXXXX = Ordnungsnummer (inkl. vorlaufende Nullen), P = Prüfziffer\n\n\n\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