use strict;
my $str = '
[image: Track your package]
<https://www.amazon.com/gp/r.html?C=D1F7PLME0YUL&K=AZB3XV0S80EZY&R=26TVFHC5RQEQB&T=C&U=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fcsef%3Dpe_385040_215884940_TE_SIMP_typ%3FieaddressID%3Dme%3D1494399599%26orderID%3D11434-0549003%26shipme26orderingShipmentId%3D2064772822089%26packageId%3D1&A=CIOW7DNSTSMBXHW0GFTJMA&ref_=pe_3850440_TE_SIMP_typ>
[image: Your Orders]
<https://www.amazon.com/gp/r.html?C=D1F7PLME0YUL&K=AZB32Forder-details%3ForderId%3D114-7286434-0549003%26eoid%3D1%240_TE_SIMP_od>
';
my $regex = qr/\[image:\WTrack\Wyour\Wpackage\]\W*?<(.*?)>/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