$re = '/\s*\(\s*\)\s*\{(.*(return\s*\d*\s*;?)\s*)\}\s*;?/';
$str = '(){}
( ) { fsf }
() { return; }
() { return x; }
(){return 0;}
( ) { fsf return 0;}
( ) { return 0; }
(){ return; }
(){ if(x){ sdfsdf } return 0;}
(){ char x[20]; return };';
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