Dlaczego mój regex PHP, który analizuje linki Markdown, jest uszkodzony?

$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);

Powyższe działa, ale jeśli miejsce jest przypadkowo wstawione między [] i (), wszystko się psuje, a dwa łącza są mieszane w jedno:

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

Mam wrażenie, że to rozluźniona gwiazda, która go łamie, ale nie wie, jak dopasować powtarzające się linki.