Я не думаю, что ваше регулярное выражение делает то, что вы хотите.
<a\s*href=['|"](http:\/\/(.*?)\S['|"]>
Это захватывает что-либо без жадности от http: // до первого непробельного символа перед кавычкой, одинарной кавычкой или каналом. В этом отношении я не уверен, как это анализирует, поскольку у этого, кажется, нет достаточно близких паренов.
Если вы пытаетесь захватить href, вы можете попробовать что-то вроде этого:
<a .*?+href=['"](http:\/\/.*?)['"].*?>
Это использует. *? (не жадное совпадение с чем-либо) для учета других атрибутов (цель, заголовок и т. д.). Он соответствует href, который начинается и заканчивается одинарной или двойной кавычкой (он не различает и позволяет href открываться одним и закрываться другим).