Вы можете использовать re.sub
:
import re
def href(d, skip = ['.png', '.gif', '.jpg', '.jpeg']):
return f'<a href="{d}">{d}</a>' if not re.findall('|'.join(skip), d) else d
s = """
La-la-la https://example.com/ https://example.com/
https://example.com/ la-la-la https://example.com/
la-la-la https://example.com/ la-la-la
"""
new_s = re.sub('https*://.*?(?=[\s$])', lambda x:href(x.group()), s)
Выход:
La-la-la <a href="https://example.com/">https://example.com/</a> <a href="https://example.com/">https://example.com/</a> <a href="https://example.com/">https://example.com/</a> la-la-la <a href="https://example.com/">https://example.com/</a> la-la-la <a href="https://example.com/">https://example.com/</a> la-la-la