Я пытаюсь создать регулярное выражение, которое будет правильно захватывать URL-адреса, в том числе те, которые заключены в круглые скобки, как в (http://example.com) и о которых говорится об ужасе кодирования в https://blog.codinghorror.com/the-problem-with-urls/
В настоящее время я использую следующее для создания тегов HTML A в python для ссылок, начинающихся с http и www.
r1 = r"(\b(http|https)://([-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]))"
r2 = r"((^|\b)www\.([-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]))"
return re.sub(r2,r'<a rel="nofollow" target="_blank" href="http://\1">\1</a>',re.sub(r1,r'<a rel="nofollow" target="_blank" href="\1">\1</a>',text))
это работает хорошо, за исключением случая, когда кто-то оборачивает URL в паренсе. У кого-нибудь есть способ получше?