use strict;
my $str = '{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImFwcElkLTBlMzViMjNmLTcwYTctNDg3OS05ZTVjLTQ4NjY5NjNjNGMxYy0yMDE5LTA5LTEwVDE3OjU0OjM1LjcxOSIsInZlciI6NH0.eyJpc3MiOiJodHRwczovL3VzLXNvdXRoLmFwcGlkLmNsb3VkLmlibS5jb20vb2F1dGgvdjQvMGUzNWIyM2YtNzBhNy00ODc5LTllNWMtNDg2Njk2M2M0YzFjIiwiZXhwIjoxNjY2NjUxMDE3LCJhdWQiOlsiYzAyYjMwYjYtMDU2YS00MDhhLWFkYWUtNTg5OTRkZWMzNzIwIl0sInN1YiI6ImMwMmIzMGI2LTA1NmEtNDA4YS1hZGFlLTU4OTk0ZGVjMzcyMCIsImFtciI6WyJhcHBpZF9jbGllbnRfY3JlZGVudGlhbHMiXSwiaWF0IjoxNjY2NjIyMjE3LCJ0ZW5hbnQiOiIwZTM1YjIzZi03MGE3LTQ4NzktOWU1Yy00ODY2OTYzYzRjMWMiLCJzY29wZSI6ImFwcGlkX2RlZmF1bHQifQ.VY_uq8dOq47XoE_rfUc6i0SJsfx-O03HpzYtxgYZnWZbyxotYGqSLzgG0SUSo7ALiGtaXSC1xQhzs6xne5CKGMLrn4rFq6po_d_8jUw3rYVy-tt_YCVMJPozg3OYTbcJ_TeTH-vv0F9OKoIZY__2XKpkuG5hb54zYMpkxfG9SdSqczRcpdBg5IvkIox5GB3shyWsolCb5km332I5ZQ4xPveqA6LA8Yw-UlVjLyKtdzCzV-T0nzTvernB-DzuAQN2z6IkC3Wg2r4YaHiywwmgy0z7Pr-TSD1_l8R2DDz9XYzZbdtgsXxEdIuka3U25nacPJLn5VYLR_oijX0YV4gMQg","expires_in":28800,"token_type":"Bearer"}';
my $regex = qr/(?<!refresh.)token(?!.type)\":\"(.*?)\"/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