Как обычно, появилась интересная задачка по регулярным выражениям, требуется написать некоторый макрос, который при встрече в шаблоне текста будет заменяться определенными значениями сформированными из параметров макроса. И чтобы было не совсем тривиально будет еще упрощенная версия этого же макроса.

упрощенный макрос link{«text»,id} и полная версия link{«text»,id}img{id}, результат их работы будет таков
макрос номер 1:
<a href="link_id">text</a>
макрос номер 2:
<a href="link_id">text<img src="img_id"></a>

регулярное выражение для полной версии макроса
/link\{«(.*?)»,([0-9]+)?)\}img\{([0-9]+?)\}/
и соответственно для упрощенной
/link\{«(.*?)»,([0-9]+?)\}/

пример шаблона:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed arcu link{«lorem»,10}img{20}, semper id dictum sit amet, egestas a dui. Donec condimentum link{«gravida ullamcorper»,5}.

результат работы регулярного выражения для полной версии макроса lorem, 10, 20
результат работы для упрощенной: lorem»,10}img{20}, semper id dictum sit amet, egestas a dui. Donec condimentum link{«gravida ullamcorper, 5

Прямо скажем, не то что я ожидал увидеть. Пробовал разные варианты ограничить жадность квантификаторов, даже всякие магически пасы в виде ?!, ?!= и прочих, пока без просвета.