use strict;
my $str = '1201 FOEZELOLIE 3 F1 II 3 1 L E2 P001 IBC02 R001MP19 T4 TP1 LGBF FL 2(D/E)S2, S2033 1201 FOEZELOLIE1201 FOEZELOLIE 3 F1 III 3 5 L E1 P001 IBC03 LP01 R001MP19 T2 TP1 LGBF FL 3(D/E)V12 S2 30 1201 FOEZELOLIE1202 DIESELOLIE of GASOLIE of STOOKOLIE, LICHT (vlampunt niet meer dan 60 °C)3 F1 III 3 640K 6645 L E1 P001 IBC03 LP01 R001MP19 T2 TP1 LGBF FL 3(D/E)V12 S2 30 1202 DIESELOLIE of GASOLIE of STOOKOLIE, LICHT (vlampunt niet meer dan 60 °C)1202 DIESELOLIE overeenkomstig norm EN 590:2013 + AC:2017 of GASOLIE of STOOKOLIE, LICHT met een vlampunt overeenkomstig norm EN 590:2013 +A1:20173 F1 III 3 640L 6645 L E1 P001 IBC03 LP01 R001MP19 T2 TP1 LGBF AT 3(D/E)V12 S2 30 1202 DIESELOLIE overeenkomstig norm EN 590:2013 + AC:2017 of GASOLIE of STOOKOLIE, LICHT met een vlampunt overeenkomstig norm EN 590:2013 +A1:20171202 DIESELOLIE of GASOLIE of STOOKOLIE, LICHT (vlampunt hoger dan 60 °C maar niet hoger dan 100 °C )3 F1 III 3 640M 6645 L E1 P001 IBC03 LP01 R001MP19 T2 TP1 LGBV AT 3(D/E)V12 30 1202 DIESELOLIE of GASOLIE of STOOKOLIE, LICHT (vlampunt hoger dan 60 °C maar niet hoger dan 100 °C )1203 BENZINE (motorbrandstof) 3 F1 II 3 243534 6641 L E2 P001 IBC02 R001 BB2MP19 T4 TP1 LGBF TU9 FL 2(D/E)S2, S2033 1203 BENZINE (motorbrandstof)1204 NITROGLYCERINE, OPLOSSING IN ALCOHOL, met niet meer dan 1 % nitroglycerine3 D II 3 601 1 L E0 P001 IBC02PP5 MP2 2(B)S2, S141204 NITROGLYCERINE, OPLOSSING IN ALCOHOL, met niet meer dan 1 % nitroglycerine1206 HEPTANEN 3 F1 II 3 1 L E2 P001 IBC02 R001MP19 T4 TP1 LGBF FL 2(D/E)S2, S2033 1206 HEPTANEN1207 HEXALDEHYDE 3 F1 III 3 5 L E1 P001 IBC03 LP01 R001MP19 T2 TP1 LGBF FL 3(D/E)V12 S2 30 ';
my $regex = qr/\d{4}( [A-a]+).+?(?=\d{4}( [A-a]+) | $)/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