use strict;
my $str = 'Parcel Locker 10080 88673
parcel locker 10080 88673
Parcel Locker 1008088673
parcel locker 1008088673
ParcelLocker1008088673
parcellocker1008088673
parcel locker1008088673
parcel locker 1008088673
parcel locker 10080 88673
10080 88673 Parcel Locker
10080 88673 parcel locker
1008088673ParcelLocker
1008088673parcellocker
hejsan parcel locker thug
Parcel street 1234567890
1234567890 Parcel street
Locker srteet 1234567890';
my $regex = qr/(\d{5}\s?\d{5})?\s?(parcel\s?locker)\s?(\d{5}\s?\d{5})?/ip;
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