in reply to Non Greedy?

Your "?" is modifying "()" instead of "*". You want

/ \[{ ( .*? ) }\] /x
or
/ \[{ ( [^\]]* ) }\] /x

Note that your strategy only works if all the content is two-level deep.