Регулярные выражения для доменных имён

Дана строка вида:

s = """
<a href="http://stepic.org/courses">
<a href='https://stepic.org'>
<a href='http://neerc.ifmo.ru:1345'>
<a href="ftp://mail.ru/distib" >
<a href="ya.ru">
<a href="www.ya.ru">
<a href="../skip_relative_links">
"""

С помощью регулярных выражений вывести доменные имена сайтов

Вот мой код:

import re
s = """
<a href="http://stepic.org/courses">
<a href='https://stepic.org'>
<a href='http://neerc.ifmo.ru:1345'>
<a href="ftp://mail.ru/distib" >
<a href="ya.ru">
<a href="www.ya.ru">
<a href="../skip_relative_links">
"""
obj = r"<a.*://([\w.]+)"
it = re.findall(obj,s)
print(*it,sep="\n")

Но он не все доменные имена выводит. КАК исправить мой код, чтобы он выводил доменные имена по образу:

mail.ru
neerc.ifmo.ru
stepic.org
www.ya.ru
ya.ru

Ответы (2 шт):

Автор решения: Алексей Р

Попробуйте так.

obj = r"(?:\/\/|[\"'])([\w-]+(?:\.[\w-]+)+)"
it = re.findall(obj, s)
print(*it, sep="\n")
stepic.org
stepic.org
neerc.ifmo.ru
mail.ru
ya.ru
www.ya.ru
→ Ссылка
Автор решения: Василий Калеев

Разобрался сам и все получилось:

import requests, re
a=input()
res = requests.get(a)
s=str(res.text)
it=[]
pattern = r'<a.*?href=".*?:\/\/((?:\w|-)+(?:\.(?:\w|-)+)+)'
it = re.findall(pattern,s)
mn=[]
for i in sorted(it):
    if i not in mn:
        mn.append(i)  
print(*mn,sep="\n")
→ Ссылка