2010-12-15 60 views
1

J'ai besoin d'une expression régulière pour capturer un URL donné SLD.Besoin d'une expression régulière pour capturer le domaine de second niveau (SLD)

Exemples:

jack.bop.com -> bop 
bop.com -> bop 
bop.de -> bop 
bop.co.uk -> bop 
bop.com.br -> bop 

Tous les BOP :). Cette regex doit donc ignorer les ccTLD, les gTLD et les ccSLD. Ce dernier est la partie difficile, puisque je veux garder l'expression rationnelle aussi peu complexe que possible.

La première tâche consisterait à supprimer les ccTLD puis les gTLD, puis à rechercher les ccSLD et à les supprimer s'ils sont présents.

Toute aide est très appréciée :)

-

Si elle aide, ccTLDs sont jumelés par:

\.([a-z]{2})$ 

Et gTLDs sont jumelés par:

\.([a-z]{3-6})$ 

Heureusement, ce sont deux modèles mutuellement exclusifs.

Répondre

3

Techniquement, '.co.uk' est le domaine de second niveau dans 'bop.co.uk'. Ce que vous semblez demander, c'est la partie la plus élevée du domaine qui était ouverte à l'enregistrement public. Je ne sais pas s'il y a vraiment un bon nom pour ça. Ce n'est certainement pas très bien défini.

Pour trouver la chose que vous voulez, vous devez énumérer tous les suffixes «pas ouvert à l'enregistrement public». Vous devriez probablement les commander du plus long au plus court, pour traiter des cas comme 'www.british-library.uk'. Après cela, le regex est assez simple:

(.+\.)?([^.]+)\.(?:<suffixes>)$ 

<suffixes> serait votre | liste séparée des suffixes. Un morceau de celui-ci ressemblerait à ceci:

gov\.uk|ac\.uk|co\.uk|com|org|net|us|uk 

Encore une fois, vous voulez commander ces longs en premier (plus précisément la contrainte réelle est que vous voulez des éléments qui sont d'autres éléments suffixes apparaissent plus tard - la commande la plus longue est une première moyen facile de répondre à cette contrainte).

Vous pourrez peut-être trouver la liste des domaines qui vous intéressent en recherchant comment les domaines de cookies sont gérés par les navigateurs Web. Il me semble me rappeler que les navigateurs font un cas spécial pour s'assurer que vous ne pouvez pas avoir des cookies qui existent pour tous les co.uk.