Warum ist mein PHP-regulärer Ausdruck, der Markdown-Links analysiert, defekt?

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

Das obige funktioniert, aber wenn versehentlich ein Leerzeichen zwischen [] und () eingefügt wird, bricht alles zusammen und die beiden Verknüpfungen werden zu einer gemischt:

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

Ich habe das Gefühl, es ist der laxe Stern, der ihn zerbricht, aber ich weiß nicht, wie ich ihn mit sich wiederholenden Links vergleichen soll.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage