Voglio trovare tutte le stringhe di questo tipo

codice:
[link]www.google.it[/link]
[link=http://www.google.it]Google[/link]
e via dicendo

Questo è il codice
codice:
<?php
$pattern = "^(\[link)(=(http(s)?://)?(www\.)?[a-zA-Z0-9.#@:%&_?=~-]+)?\][a-zA-Z0-9.#@:%&_\?=~-/]+(\[/link\])$";

$stringa = "[link=http://www.google.it]google[/link]";

## Data la stringa 
## deve restituire true

if(preg_match($pattern, $stringa))
	echo "C'e'";
else
	echo "Non c'è";
	
?>
E questo l'errore
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/www/html/site/link.php on line 6
In sostanza vorrei realizzare un parser php per il codice vb che trovate anche in questo forum come potete notare

Sto cercando di mettermi alla prova con le espressioni regolari (è la prima volta che le uso) ma stanno vincendo decisamente loro. Dov'è lerrore?

Magari esiste già un parser bello che pronto... ne sapete qualcosa?