use strict;
my $str = 'from s32.hekko.net.com
by s32.hekko.net.com with LMTP id 0KRkJkxRu1qDS1AAbRxtZA
for <john@gmail.com>; Wed, 28 Mar 2018 10:24:44 +0200
Return-path: <johnsfather@onet.com>
Envelope-to: john@gmail.com
Delivery-date: Wed, 28 Mar 2018 10:24:44 +0200
from smtpo114.poczta.onet.com ([213.180.149.147])
by s32.hekko.net.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
(Exim 4.90_1)
(envelope-from <johnsfather@onet.com>)
id 1f16Nv-00057D-Sj
for john@gmail.com; Wed, 28 Mar 2018 10:24:44 +0200
from pmq4v.m5r2.onet (pmq4v.m5r2.onet [30.174.32.60])
by smtp.poczta.onet.com (Onet) with ESMTP id 40B2Bw16y9zqtBg4
for <john@gmail.com>; Wed, 28 Mar 2018 10:24:40 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=onet.com; s=2011;
t=1522235480; bh=6YEU3a1jv48GQ33zI1zre2Sf05w2DqLyMQhJ7UmYfyM=;
h=From:To:Date:Subject:From;
b=svf7rTDJFp7gUMQFA6GShG07bYFIpsSaxPOvdXYad/2ln6x+BGE4z4OoIfqBgpGhE
2n43jucpTRvw7mdT33vor7NXnI6mMXjLZjJp6J4cOpxGLnuAnSEo0G/xLWirIgFmm4
TojYv7tx5z/PugqZc/c59WzApn14FEhmVSrC+1IE=
Content-Type: multipart/alternative; boundary="===============2073168411=="
MIME-Version: 1.0
from [37.47.10.237] by pma4v.m5r2.onet via HTTP id
201803281024458192010001; Wed, 28 Mar 2018 10:24:40 +0200';
my $regex = qr/(by ).*(with)/p;
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