this won't work well with one single matcher - it gets too complicated and also too slow.
try four versions:
// first one for
[link]xxxx://www.domain.com[/link]
// second one:
[link]www.domain.com[/link] code.. (no xxxx:// prefix).
// third one:
[link=xxxx://www.domain.com]domain[/link] code..
// fourth one
[link=www.domain.com]description[/link] code.. (no xxxx:// prefix).
for each of these you'll need a different pattern.
[edit]
wah... it is always parsing the urls...
[/edit]