Если часть перед двоеточием или его эквивалентом должна состоять только из букв, вы можете использовать следующий код:
preg_match_all('/\[([a-z]+[:=][^\]]+)\]/i', $string, $matches);
Если первая часть чем-то более похожа на идентификатор PHP (за исключением $ ), то вы можете использовать следующий код:
preg_match_all('/\[([a-z_]+[a-z0-9_]+[:=][^\]]+)\]/i', $string, $matches);