Замена тегов в фигурных скобках, даже вложенных тегах, с регулярным выражением

пример

preg_replace('/\{[a-zA-Z.,\(\)0-9]+\}/', 'Replaced', 'Lorem ipsum dolor sit {tag1({tag2()})}, consectetur adipiscing elit.'); 

Результат:

Lorem ipsum dolor сидит {tag1 (заменен)}, consectetur adipiscing elit.

Вопрос

Как вы видите, «tag2» был заменен, но я хочу заменить «tag1». Кто-нибудь знает, как я могу это сделать?

(В некоторых случаях это может быть так: {tag1({tag2({tag3()})})}) и т. Д.)

Btw Я использую preg_replace_callback, но его проще показать с помощью preg_replace

Вот сайт, на котором вы можете протестировать код: http://www.spaweditor.com/scripts/regex/index.php

Вам нужно добавить фигурные скобки к вашему набору символов. Вот шаблон, который я использовал:

 /\{[a-zA-Z.,\(\)\{\}0-9]+\}/ 

И вот результат:

 "Lorem ipsum dolor sit Replaced, consectetur adipiscing elit." 

После того, как вы начнете говорить о сопоставлении вложенных шаблонов (например: сопоставление внутренней группы в квадратных скобках с чем-то вроде (foo (bar) fu) ), то регулярное выражение является неправильным инструментом. Регулярные выражения являются апатридами, что в данном случае означает, что они не могут подсчитать, сколько скобок открыто.

Если вы хотите сделать что-то подобное, вам может потребоваться изучить парсер