Basierend auf Ihrem Kommentar oben, werde ich die Frage neu interpretieren - anstatt eine Regex zu machen, die ihnen entspricht, Wir werden eine Funktion erstellen, die ihnen entspricht, und diese Funktion anwenden, um eine Liste von Domänennamen zu filtern, die nur erstklassige Domänen enthalten, z google.com, amazon.de.
Zuerst benötigen wir eine Liste der TLDs. Wie Greg bereits erwähnt hat, ist die öffentliche Suffixliste ein großartiger Ausgangspunkt. Nehmen wir an, Sie haben die Liste in ein Python-Array namens suffixes
geparst. Wenn das etwas ist, mit dem Sie nicht zufrieden sind, kommentieren Sie und ich kann Code hinzufügen, der das tut.
suffixes = parse_suffix_list("suffix_list.txt")
Jetzt werden wir Code benötigen, die eine bestimmte Domain-Namen identifiziert, ob das Muster passt etwas-name.suffix:
def is_domain(d):
for suffix in suffixes:
if d.endswith(suffix):
# Get the base domain name without suffix
base_name = d[0:-(suffix.length + 1)]
# If it contains '.', it's a subdomain.
if not base_name.contains('.'):
return true
# If we get here, no matches were found
return false
Sie benötigen explizit eine regex, oder wäre eine Funktion, es zu tun ausreichen ? – Benson
Dies würde ein ziemlich großer Regex werden, da Sie alle ccSLDs als Spezialfälle behandeln müssen, und es gibt eine Menge (und ich meine A LOT) von ccSLDs. Brasilien hat 66 von ihnen! – You
@Benson, eine Funktion würde funktionieren, solange sie domain.cctld in einer langen Liste von Domänen finden könnte – Tom