Разметка разметки в абстрактном дереве синтаксиса с использованием регулярного выражения

Этот вопрос дополняет: Рекурсивная обработка разметки с использованием регулярного выражения и DOMDocument

Код, предоставленный выбранным ответом, очень помог понять построение базового дерева синтаксиса. Однако теперь у меня возникают проблемы с ужесточением регулярных выражений, чтобы соответствовать только синтаксису, а не {. но не {{ . В идеале я бы хотел, чтобы он соответствовал только моему синтаксису:

 {<anchor>} {!image!} {*strong*} {/emphasis/} {|code|} {-strikethrough-} {>small<} 

Для двух тегов a и small также требуются разные конечные теги. Я пробовал модифицировать $re_closetag из исходного образца кода, чтобы отразить это, но он по-прежнему совпадает с текстом.

Например:

 http://www.google.com/>} bang smäll<} boom 

Моя тестовая строка:

 tëstïng {{ 汉字/漢字 }} testing {<http://www.google.com/>} bang {>smäll<} boom {* strông{/ ëmphäsïs {- strïkë {| côdë |} -} /} *} {*wôw*} 1, 2, 3