I couldn't help but try my own. It probably could be a little more elegant but it works with every situation I could think of. It also returns the description.
preg_match_all('/<a(?:\s+|\s+[^>]+)href=([^>\s]+)(?:\s(?:[^>]+)?)?>([^<]+?)<\/a>/i',$a_tag,$matches);
$matches[1] contains the URLs and $matches[2] contains the descriptions
Edit: Had to make a slight change. Was accepting <ahref...> (without the space)