Se você não quiser incluir o espaço em branco à direita em uma partida, use uma visão antecipada negativa:
[a-z]+[:.].*?(?=\s)
No seu exemplo, isso corresponderia:
regexbuddy.com
www.regexbuddy.com
http://regexbuddy.com
http://www.regexbuddy.com
http://www.regexbuddy.com/
http://www.regexbuddy.com/index.html
http://www.regexbuddy.com/index.html?source=library
http://www.regexbuddy.com/download.html.
www.domain.com/quoted
http://10.2.2.1.2/ttxx/txt/gg
Para combinar ainda mais apenas http
ou https
e opcional www
use algo como:
(https?):\/\/(www\.)?[a-z0-9\.:].*?(?=\s)
Aqui está regex de John Gruber para verificar o que parece ser um URL, que parece funcionar muito bem no seu caso:
(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s'!()\[\]{};:'".,<>?«»“”‘’]))
Mas, honestamente, todas essas abordagens só vão te dar falsas correspondências, mais cedo ou mais tarde. Se você precisar de uma expressão regular para analisar URLs, consulte esta pergunta do Stack Overflow: Qual é a melhor expressão regular para verificar se uma string é uma URL válida?