use strict;
my $str = '[Source: {\\"commisionEvent\\":{\\"channel\\":\\"testString\\",\\"orderType\\":\\"testString\\",\\"eventSource\\":\\"testString\\",\\"eventCreationDate\\":\\"2018-02-10T00:30:21.298Z\\",\\"orderDate\\":\\"2018-02-10T00:30:21.298Z\\",\\"dealerCode\\":\\"testString\\",\\"ban\\":\\"123\\",\\"orderNo\\":\\"testString\\",\\"originalOrderNo\\":\\"testString\\",\\"customerName\\":\\"testString\\",\\"msisdn\\":\\"testString\\",\\"orderDetails\\":[{\\"sku\\":\\"testString\\",\\"imei\\":\\"testString\\",\\"msisdnLineLevel\\":\\"testString\\",\\"msrp\\":\\"1000.00\\",\\"customerPaidAmount\\":\\"1200.00\\",\\"sellingPrice\\":\\"1000.00\\",\\"jumpIndicator\\":\\"testString\\",\\"eipIndicator\\":\\"123\\",\\"eip1stPayment\\":\\"1100.00\\",\\"eipPlanId\\":\\"testString\\",\\"eipInitialAmount\\":\\"1000.00\\",\\"discount\\":\\"100.00\\",\\"transactionid\\":\\"testString\\",\\"shippedDate\\":\\"test\\",\\"priceoverrideamount\\":\\"1000.00\\",\\"priceOverrideCode\\":\\"testString\\",\\"overrideReason\\":\\"testString\\",\\"originalTransactionId\\":\\"testString\\",\\"lineType\\":\\"testString\\",\\"transactionType\\":\\"testString\\"}]}}; line: 1, column: 676]';
my $regex = qr/\"transactionid\\\":\\\"(?<transactionid>[^\\]++)/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