bueno (se siente algo raro hablar solo pero bueno quizà a alguien le sirva) lo solucione con la siguiente expresión
preg_match_all("<\{((\s*\w*\s*\(*\)*)*)\}|\[((\s*\w*\s*\(*\)*)*)\]>", $string, $matchs);
de paso comparto un sitio que me fue de mucha ayuda
http://www.regexpal.com/
saludos