use strict;
my $str = '2016-04-20 13:30:59,818 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 13:31:01,817 (glastopf.glastopf) 141.8.83.213 requested POST /index on e1f841a092e9:80
2016-04-20 13:31:01,855 (glastopf.glastopf) 141.8.83.213 requested GET /style.css on e1f841a092e9:80
2016-04-20 13:31:01,883 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 16:39:55,713 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 16:39:55,797 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 16:39:55,834 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 17:54:33,857 (glastopf.glastopf) 62.210.252.43 requested GET / on de96c7b4104d:80
2016-04-20 17:54:34,101 (glastopf.glastopf) 62.210.252.43 requested GET /HNAP1/ on de96c7b4104d:80
2016-04-20 22:06:20,265 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 22:06:20,399 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 22:06:20,446 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 22:33:23,136 (glastopf.glastopf) 74.91.23.109 requested GET / on 11bbb1d43c02:80
';
my $regex = qr/^(?!.*?141\.8\.83\.213).*\bGET\b/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