2016-10-06 5 views
1

この正規表現を単純でないドメインでも動作させるのは苦労しています。それは上の作品ドメインと拡張子の正規表現ではダブルワードの拡張子を扱えません

((https?):\/\/)?(\w+\.)*(?P<domain>\w+)\.(?P<extension>\w+)(\.\w+)(\/.*)? 

http://google.com 
https://google.com 
http://www.google.com 
https://www.google.com 

をので、上記の例では、google.comなどの拡張としてドメインを認識する。

しかし、それはダブルワードの拡張子であれば、それは倒れ:

http://www.google.com.hk 

上記の例では、ドメインは.hkとして.comと延長として見られています。

.com.hkスタイル拡張子を理解する正規表現を調整する方法を知っていますか?

ありがとうございます。

+0

このリンクを参照してください。 [ここをクリック](http://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url) –

+0

いいえ、そのリンクは機能していません。乾杯。 –

+1

これを試してみてください。\ * \:\/\ /(?:www \。)?([^ \ /] +) ' – sideroxylon

答えて

1

オプションの「ドットその後、単語は」拡張子の一部であることを許可する:

((https?):\/\/)?(\w+)\.(?P<domain>\w+)\.(?P<extension>\w+(\.\w+)?)(\/.*)? 

は、私はまた、URLの最初の部分のキャプチャから*数量詞を削除しました。

0

これを試してみてください - .*\:\/\/(?:www\.)?([^\/ ]+)

例の拡張を一致すること。それは/またはスペースで停止します。

0

ドメイン名に関連する拡張機能の概念はなく、FQDN(完全修飾ドメイン名)、TLD(トップレベルドメイン)、ラベルおよびサブドメインのみが存在します。

私はあなたの最後の例http://www.google.com.hk取る場合:

  • wwwgooglecomhkラベル
  • www.google.com.hkあるのドメインであり、FQDN
  • hkがドメインであり、それは最後なので、それはTLDです
  • com.hkhkサブドメイン
  • です
  • google.com.hk
  • www.google.com.hkcom.hkサブドメインで重要なことは、ラベルcomは、ここでは特に何もありませんし、何もすることができることである

google.com.hkサブドメインです。 TLDの制約がありません(TLDは何でも構いません。リストはhereです)です。

com.hk

結論は変わらないgoogle.hkgoogle.compizza.orgorg.pizza(はいTLD pizzaが存在する)、全てのドットで区切られた2つのラベルを有する:TLDとそのサブドメイン。

注:最後の2つのラベルは、SLD(Second Level Domain)と呼ばれることがあります。

  • URL構文を使用すると、
  • 考えるよりも複雑である:あなたが使用している言語は、正規表現が進むべき道ではありませんあなたは2つの主な理由のためのURLを解析したい場合はどのような


    言語のほとんどは(... Pythonでurllib.parse、PHP、C#、Java(登録商標)、nodejsでURLモジュールでjava.net.URLURIクラスのparse_url)それを行うには、すでにツールを持っている

これらのツールを使用すると、簡単にURLからホスト名を抽出できます。あなたは(ここでは存在しないラベルにFQDNを分割するのではなく、分離するために、このホスト名がIPv4でない場合は、この例ではドットが同じ意味を持っていないので、最初にチェックする必要があります後


4つの数字)、またはIPv6です。

次に、ホスト名を分割し、TLDを取得するために最後の項目を取ります。残りの項目を結合して、ホスト名の「サブドメイン部分」を取得することができます。

最後に、TLDリストにあるすべてのラベルを区切ることを目標とする場合は、コード内にこのリストを含め、最後から項目があるかどうかをチェックする必要があります。

しかしもう一度、ドメイン名には「拡張子」がなく、さらに「ダブルワード拡張子」が少なくなります。

関連する問題