use strict;
my $str = '0100003949753>210000000003139471430009017+ 010001628>
0100000023651>000551106208600215460130935+ 010058907>
2100000440001>961116900000006600000009284+ 030001625>
042>000000676817431677100399580+ 010107280>
319>961116900000006600000009284+ 030001625>
Absichtliche Fehler;
-0100003949753>210000000003139471430009017+ 010001628>
0100-000023651>000551106208600215460130935+ 010058907>
2100000440001>9611169000000006600000009284+ 030001625>
042>00000067681743167710.0399580+ 010107280>
319>961116900000006600000009284+ 030001.625>
0100003949753>210000000003139471430009017+ 010001628>
#1: ESR 9/27, CHF 3949.75, Ref 210000000003139471430009017, Tn 010001628 (01-162-8)
#2: ESR 9/27, CHF 23.65, Ref 000551106208600215460130935, Tn 010058907 (01-5890-7)
#3: ESR 9/27, EUR 440.00, Ref 961116900000006600000009284, Tn 030001625 (03-162-5)
#4: ESR+ 9/27+ CHF ?? Ref 000000676817431677100399580, Tn 010107280 (01-10728-0)
#5: ESR+ 9/27+ EUR ??.?? Ref 961116900000006600000009284, Tn 030001625 (03-162-5)
ESR oder ESR+
Gruppe1:
01 = ESR in CHF
04 = ESR+ in CHF
21 = ESR in EUR
31 = ESR+ in EUR
Nicht beachtet:
11 = ESR in CHF zur Gutschrift auf das eigene Konto
14 = ESR+ in CHF zur Gutschrift auf das eigene Konto
23 = ESR in EUR zur Gutschrift auf das eigene Konto
33 = ESR+ in EUR zur Gutschrift auf das eigene Konto
Gruppe2: Betrag (bei ESR+ nicht vorhanden/leer)
Gruppe3: Prüfcode
Gruppe4: Referenznummer
Gruppe5: Kundennummer
VVXXXXXXP> VV = ESR-Code, XXXXXX = Ordnungsnummer (inkl. vorlaufende Nullen), P = Prüfziffer
';
my $regex = qr/(?i)^(01|04|21|31)(\d{10})?(\d{1}>)(\d{16,27})\+\s+(\d{5,9})>/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
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 Perl, please visit: http://perldoc.perl.org/perlre.html