Trennen von Domains und Subdomains mit einem Shell Skript
Trennen von Domains und Subdomains ist ein Problem, dass einen durchschnittlichen Software Entwickler auf den ersten Blick nicht wirklich vor ein ernstes Problem stellt. Schnell einen entsprechenden regulären Ausdruck (RegExp) hingeworfen und schon kann man Domains von Subdomains unterscheiden.
z.B. \’^(www\\.)?[a-zA-Z0-9\\-]*\\.(?[a-zA-Z]*)$\’
Schade nur, dass es neben den üblichen Domains wie .de, .com, .net, .org und wie sie alle heißen auch noch andere Vertreter gibt. Es gibt eine nicht zu verachtende Menge von Domains, die dem Schema nicht folgen.
Z.B.
.co.uk, .com.br, .or.jp usw.
Domains in der Forum www.sex.or.jp sind also aus Sicht des Regulären Ausdrucks schon Subdomains. Es ist also unmöglich solche Domain von Subdomains zu unterscheiden ohne mit einer Liste von vorgegebenen TLDs zu arbeiten. Mal ganz davon abgesehen dass es sich streng genommen hierbei ja auch um Subdomains handelt und .or.jp auch nicht wirklich eine TLD ist. Ich nenne sie deshalb gerne auch \”TLD++\”
Zitat RFC 1591
In the Domain Name System (DNS) naming of computers there is a hierarchy of names. The root of system is unnamed. There are a set of what are called \”top-level domain names\” (TLDs). These are the generic TLDs (EDU, COM, NET, ORG, GOV, MIL, and INT), and the two letter country codes from ISO-3166.
Es bleibt also nichts anderes, als mit einer Liste zu arbeiten. Diese Liste muss alle TLD++ enthalten, die man als gültig erachtet. Aus der Liste Meine gesammelte Two Level Domain Liste aus aller Welt kann man aber sehr leicht ersehen, wie viele das sind.
An einem verregnetem Tag habe ich mir mal die Mühe gemacht, und die ca. 350 wichtigsten TLD++ aus der Liste gesucht und mit deren Hilfe einen regulären Ausdruck erstellt, der nur diese Domains und keine Subdomains (außer der Subdomain www) findet. Natürlich ist das immer sehr subjektiv, aber ich möchte den Ausdruck trotzdem hier veröffentlichen.
Das Shell Skript mit dem kompletten RegEx gibt es hier domain.sh.
Weiterführende Themen: