¿Por qué mi regex PHP que analiza los enlaces Markdown está rota?

<code>$pattern = "/\[(.*?)\]\((.*?)\)/i";
$replace = "<a href=\"$2\" rel=\"nofollow\">$1</a>";
$text = "blah blah [LINK1](http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?";
echo preg_replace($pattern, $replace, $text);
</code>

Lo anterior funciona, pero si se inserta accidentalmente un espacio entre [] y () todo se rompe y los dos enlaces se mezclan en uno:

<code>$text = "blah blah [LINK1] (http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?";
</code>

Tengo la sensación de que es la estrella laxy la que lo rompe, pero no sé cómo hacer coincidir los enlaces que se repiten.

Respuestas a la pregunta(2)

Su respuesta a la pregunta