LoginSignup
2
2

More than 5 years have passed since last update.

co.jp のある hostname を正規表現で分解する

Last updated at Posted at 2017-08-29

解決したい問題

あるhostnameから3つの部分を抽出したい:Domain, SubDomain, Top Level Domain
(Domainの構成について、GoDaddyのYoutubeの説明がおすすめです)

例えば、下記のhostnameなら、
www.facebook.com

Subdomain:(www) 特に意味ないから略にする
Domain:facebook
Top Level Domain:com

でも、日本でよくある co.jp みたいなやつ、(正確にいうと違うけど)ここではセットのTLDで考えたい。
例えば、news.yahoo.co.jp なら、

Subdomain:news
Domain:yahoo
Top Level Domain:co.jp

という結果がほしいです。

ちなみに、日本以外も、こういうco.xx式を使ってる国もいます。

Some of the countries using .co as a second-level domain include India (.in), Indonesia (.id), Israel (.il), the United Kingdom (.uk), South Africa (.za), Costa Rica (.cr), New Zealand (.nz), Japan (.jp), South Korea (.kr) and Cook Islands (.ck).

ref: wikipedia

Python3のコード

import re

p_tld = re.compile(r"\.(?P<tld>(?:\w{2}\.)?\w{2,5})$")

test =[
"amazon.co.jp",
"amazon.com",
"news.yahoo.co.jp",
"news.yahoo.jp",
"news.yahoo.com",
"google.jp",
"google.co.jp",
"google.com",
"www.microsoft.com"
]

for t in test:
    print(t)

    # wwwをなくす
    t = re.sub(r"^www\.", "", t)

    # TLDの部分を探す
    m = p_tld.search(t)
    if(m != None):
        print("tld:", m.group("tld"))

    # TLDの部分をカット
    t = p_tld.sub("",t)

    # 残る部分。もしsubdomainあれば、print。なければ、domainだけprint
    subdomain = t.split('.')
    if(len(subdomain) > 1):
        print("subdomain:", subdomain[0])
        print("domain:", subdomain[1])
    else:
        print("domain:", subdomain[0])
    print("--------")

テスト結果

amazon.co.jp
tld: co.jp
domain: amazon
--------
amazon.com
tld: com
domain: amazon
--------
news.yahoo.co.jp
tld: co.jp
subdomain: news
domain: yahoo
--------
news.yahoo.jp
tld: jp
subdomain: news
domain: yahoo
--------
news.yahoo.com
tld: com
subdomain: news
domain: yahoo
--------
google.jp
tld: jp
domain: google
--------
google.co.jp
tld: co.jp
domain: google
--------
google.com
tld: com
domain: google
--------
www.microsoft.com
tld: com
domain: microsoft
--------
2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2