$re = '/from group (\d+)(?:(?!Temp).)*?(Temp)?(?:(?!Temp).)*?\\\\t(.*? ALL-..)/m';
$str = '{"show permission allowed to 16": "show permission to 16\\\\nSchool permissions from group 17:student to group 16:teacher:\\\\n\\\\tAllow ALL-00\\\\nSchool permissions from group 18:library to group 16(Temp):teacher:\\\\n\\\\tNo Allow ALL-00\\\\nSchool permissions from group 20:Gym to group 16:teacher:\\\\n\\\\tCheck ALL-00\\\\nRTYAHY: FALSE\\\\nRTYAHY: FALSE\\\\n\\\\n#"}';
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