use strict;
my $str = '{
"outcome" => "success",
"result" => {
"deep-copy-subject-mode" => false,
"vault" => undefined,
"security-domain" => {
"jboss-web-policy" => {
"acl" => undefined,
"audit" => undefined,
"authentication" => undefined,
"cache-type" => "default",
"identity-trust" => undefined,
"jsse" => undefined,
"mapping" => undefined,
"authorization" => {"classic" => {"policy-modules" => [{
"code" => "Delegating",
"flag" => "required",
"module-options" => undefined
}]}}
},
"other" => {
"acl" => undefined,
"audit" => undefined,
"authorization" => undefined,
"cache-type" => "default",
"identity-trust" => undefined,
"jsse" => undefined,
"mapping" => undefined,
"authentication" => {"classic" => {"login-modules" => [
{
"code" => "Remoting",
"flag" => "optional",
"module-options" => [("password-stacking" => "useFirstPass")]
},
{
"code" => "RealmUsersRoles",
"flag" => "required",
"module-options" => [
("usersProperties" => "${jboss.server.config.dir}/application-users.properties"),
("rolesProperties" => "${jboss.server.config.dir}/application-roles.properties"),
("realm" => "ApplicationRealm"),
("password-stacking" => "useFirstPass")
]
}
]}}
},
"jboss-ejb-policy" => {
"acl" => undefined,
"audit" => undefined,
"authentication" => undefined,
"cache-type" => "default",
"identity-trust" => undefined,
"jsse" => undefined,
"mapping" => undefined,
"authorization" => {"classic" => {"policy-modules" => [{
"code" => "Delegating",
"flag" => "required",
"module-options" => undefined
}]}}
}
}
}
}
';
my $regex = qr/[\n\s]*=>[\n\s]*\[[\n\s]*(\([^\]]+\))[\n\s]*\]/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