$re = '/[\n\s]*=>[\n\s]*\[[\n\s]*(\([^\]]+\))[\n\s]*\]/m';
$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
}]}}
}
}
}
}
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php