Это выражение не ищет ссылки в тексте, оно ищет независимые фрагменты текста, которые могут входит в ссылку в рамках одной строки. Чтобы оно определяло ссылку как один объект, нужно посложнее выражение с заглядыванием вперед и назад, в зависимости от того, что в первую очередь будет определятся - наличие протокола или доменной зоны, есть ли путь к странице, запросная часть ?, якоря #.
Потом нужно усложнить такое выражение, но при этом вы должны выписать все аномальные примеры искажения ссылок - в каких конкретно местах появляются пробелы (а может еще и табы и другие нечитаемые символы).
"содержит или не содержит символ" (а точнее - предыдущее выражение) в регулярных выражениях обозначается знаком вопроса. Шаблон \. ?ru найдет как site.ru, так и site. ru