What's wrong is that you're using 2 overly-complicated regexp's where 1 moderately simple one would do. For example, I'd probably start with a pattern like:
@<a .*href=["'](.+)["'].*>@siU
(untested) and work from there.
However, note that if you're parsing a full HTML document, you'd be a lot better off just using [man]DOM[/man] to parse the HTML.