2011-10-22 8 views
2

ドメイン(サブドメイン以外のすべて)を検索しようとしています。正規表現 - ドメインの問題の解析

私は今、この正規表現を持っている:

(?:[-a-zA-Z0-9]+\.)*([-a-zA-Z0-9]+(?:\.[a-zA-Z]{2,3})){1,2} 

これは、のようなもののために働く:

domain.tld 
subdomain.tld 

しかし、それは、TLDの ".com.au" または」.CO等とのトラブルに実行されます。英国:

domain.co.uk (finds co.uk, should find domain.co.uk) 
subdomain.domain.co.uk (finds co.uk, should find domain.co.uk) 

+2

どの言語?... –

+0

text1.text2.text3は、サブドメイン.domain.suffixでもかまいません。また、domain.suffixPart1.suffixPart2でもかまいません。正規表現だけでは答えはありません。 – Gibron

+0

@ミッチ - 私はそれを動作させることができるので、私はそれが関連しているとは思わなかったので、私はそれをリストしなかった。私はPHPを使用しますが、それを動作させるために任意の言語から正規表現を転置することができます。 –

答えて

3

私はこの問題が「合理的に解決可能」であるとは確信していません。 Mozillaは、ブラウザの作成者が1つの管理上のコントロール(例えば、*.co.uk.または*.union.aero.の有効なクッキーを設定できないようにする)に対してのみ、Cookieを受け入れるのを助けることを目的としたa list of 'public suffix' domainsを管理しています。明らかに完全ではありません(最終的にis-a-caterer.comスタイルドメインの長いリストが見つかりますのでfoo.is-a-caterer.combar.is-a-caterer.comで使用されるクッキーを設定できませんでしたが、is-a-caterer.comは完全に「ドメイン」です

このようにリストを使用する準備ができていれば、一般的なルールと例外を適用して、指定された入力文字列のどこを判別するかを知っている素早く小さなパーサを書くことができますあなたの「ドメイン」とは、あなたが興味のある部分だけを返してくる、と

私はシンプルなアプローチは失敗する運命にしていると思う:。いくつかのccTLDsなど.caとしては、セカンドレベルドメインを使用していない、そのようないくつかのとしては数十を使用し、lib.or.usのようなものはmultnomah.lib.or.usのような「ドメイン」から数レベル離れています。どのドメインがパブリックサフィックスであるかのキュートリストを使用している場合を除き、入力文字列の一部が間違っていることになります。

+0

答えをありがとう!私は既に存在するものを見つけようとするか、自分自身で作ることを試みるでしょう:) –