$re = '/(?m)^[^{}]*{\s*(?>"(?!status": "OK)[^{}"]++)+}/';
$str = '{
"JMS Server": {
"message": "Successfully connected to JMS Server",
"status": "OK"
},
"Database": {
"message": "JDBC Connection failure",
"status": "CRITICAL",
"info": "No operations allowed after connection closed."
},
"Application": {
"message": "Application is up",
"status": "OK",
"info": "Application name = Testing"
}
}
{
"JMS Server": {
"message": "Successfully connected to JMS Server",
"status": "OK"
},
"Database": {
"message": "Database was successfully reached in 1ms",
"status": "OK"
},
"Application": {
"message": "IO Error Connection refused (Connection refused)",
"status": "CRITICAL",
"info": "URL = http://localhost/testing/healthcheck"
}
}';
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