use strict;
my $str = ' {"severity":"DEBUG","logger":"org.mule.module.http.internal.HttpMessageLogger","thread":"[dmvproxy-1.0.2-RELEASE].HTTP_Listener_Configuration.worker.790","message":"LISTENER\\nPOST \\/inolrsproxy HTTP\\/1.1\\r\\nContent-Type: text\\/xml; charset=UTF-8\\r\\nAccept: *\\/*\\r\\nUser-Agent: Apache CXF 3.1.4\\r\\nX-Takipi-SN: 18480\\r\\nCache-Control: no-cache\\r\\nPragma: no-cache\\r\\nHost: dmv-proxy.dmv-proxy.rancher.internal:8081\\r\\nConnection: keep-alive\\r\\nContent-Length: 3413\\r\\n\\r\\n<soap:Envelope xmlns:soap=\\"http:\\/\\/schemas.xmlsoap.org\\/soap\\/envelope\\/\\"><soap:Body><test>testvalue<\\/test><\\/soap:Body><\\/soap:Envelope>"}';
my $regex = qr/(?<soap_envelope><soap:Envelope.*\/soap:Envelope>)/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