Extrahieren von top-level-und second-level-domain aus einer URL mit Hilfe von regex
Wie kann ich extrahieren Sie nur top-level-und second-level-domain aus einer URL mit Hilfe von regex? Ich möchte alles überspringen unteren level-domains. Irgendwelche Ideen?
InformationsquelleAutor mel | 2014-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist meine Idee,
Match alles, das nicht ein Punkt, drei mal, vom Ende der Zeile mit der
$
Anker.Dem letzten Spiel vom Ende der Zeichenfolge sollte optional zu ermöglichen
.com.au
oder.co.nz
Art von domains.Beide den letzten und vorletzten entspricht, passt nur 2-3 Zeichen, so dass es nicht zu verwechseln mit einem second-level-domain-Namen.
Regex:
[^.]*\.[^.]{2,3}(?:\.[^.]{2,3})?$
Demonstration:
Regex101 Beispiel
was ist top-level-domains wie "Polizei.uk" oder "Parlament.uk" etc. Mehr über .uk domains gibt es hier: en.wikipedia.org/wiki/.uk
InformationsquelleAutor Vasili Syrakis
Können Sie diese:
Ohne mehr details (eine Beispiel-Datei, die Sprache, die Sie verwenden), ist es schwer zu erkennen, genau, ob das funktionieren wird.
Beispiel: http://regex101.com/r/wD8eP2
InformationsquelleAutor brandonscript
Für jemand mit JavaScript und wollen einen einfachen Weg zu extrahieren Sie die top-und second-level-domains, landete ich zu tun:
Diese Spiele nichts mit einem Punkt gefolgt von zwei oder drei Zeichen und dann ein Wort-Grenze.
Hier einige Beispiel-Ausgaben:
Einige Menschen brauchen etwas ein bisschen schlauer, aber das war genug für mich, mit meinem bestimmten Datensatz.
Bearbeiten
Habe ich realisiert es gibt tatsächlich schon ein paar second-level-domains, die länger als 3 Zeichen sein (und dürfen). So, wieder zur Einfachheit, die ich gerade entfernt die Zeichen zählen element meiner regex:
InformationsquelleAutor shennan
wenn Sie möchten, dass alle bestimmten Top-Level-Domain-Namen, dann Sie schreiben können, der reguläre Ausdruck wie folgt:
Sie können auch mehrere domain-Namen unter diesem link:
https://www.icann.org/resources/pages/tlds-2012-02-25-en
InformationsquelleAutor Sam
Seit TLDs beinhalten jetzt Dinge, die mit mehr als drei Zeichen wie .wang und .Reisen, hier ein regex erfüllt, dass diese neuen TLDs:
([^.\s]+\.[^.\s]+)$
Strategie: beginnend am Ende der Zeichenfolge, suchen für ein oder mehrere Zeichen, die nicht Punkte oder Leerzeichen, gefolgt von einem Punkt, gefolgt von einem oder mehreren Zeichen, die nicht Punkte oder Leerzeichen.
http://regexr.com/3bmb3
InformationsquelleAutor protagonist
Wenn Sie brauchen, um genauer zu sein:
Basierend auf http://www.seobythesea.com/2006/01/googles-most-popular-and-least-popular-top-level-domains/
Sie haben Recht, ich bin noch auf der Suche für die vollständige Liste der TLDs
Das ist eine fast Unmögliche Aufgabe, mit neuen generischen TLDs kommen aus die ganze Zeit. .Weihnachten, .london .bar .bank? Siehe newgtlds.icann.org/en/announcements-and-media/case-studies Wohl am besten einen der regex erwähnt in den anderen Antworten (zB.:
\.[a-z]{2,3}(\.[a-z]{2,3})?
)InformationsquelleAutor Dorian