Почему мое регулярное выражение PHP, которое разбирает ссылки Markdown, не работает?

<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>

Вышеприведенное работает, но если между [] и () случайно вставлен пробел, все разрывается и две ссылки смешиваются в одну:

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

У меня такое чувство, что это ломкая звезда, которая его ломает, но я не знаю, как еще найти повторяющиеся звенья.

Ответы на вопрос(2)

Ваш ответ на вопрос