正規表現を使用してhttpおよび/またはwwwを削除し、http ://www.domain.com/をdomain.comに取り込むにはどうすればよいですか。
xを任意の種類のTLDまたはcTLDと見なします
入力例:
www.domain.x
出力:
domain.x
正規表現を使用してhttpおよび/またはwwwを削除し、http ://www.domain.com/をdomain.comに取り込むにはどうすればよいですか。
xを任意の種類のTLDまたはcTLDと見なします
入力例:
www.domain.x
出力:
domain.x
正規表現を使用せず、urlparseを使用してnetlocを取得します
>>> x = 'http://www.domain.com/'
>>> from urlparse import urlparse
>>> o = urlparse(x)
>>> o
ParseResult(scheme='http', netloc='www.domain.com', path='/', params='', query='', fragment='')
>>>
その後
>>> o.netloc
'www.domain.com'
>>> if o.netloc.startswith('www.'): print o.netloc[4:]
...
domain.com
>>>
urlparse()
文字列を分割したり分割したりする代わりに、本当に正規表現を使用したい場合は、次のようにします。
>>> domain = 'http://www.example.com/'
>>> re.match(r'(?:\w*://)?(?:.*\.)?([a-zA-Z-1-9]*\.[a-zA-Z]{1,}).*', domain).groups()[0]
example.com
正規表現は少し単純かもしれませんが、機能します。置き換えもしていませんが、ドメインを削除する方が簡単だと思います。
'co.uk'のようなドメインをサポートするには、次のようにします。
>>> p = re.compile(r'(?:\w*://)?(?:.*?\.)?(?:([a-zA-Z-1-9]*)\.)?([a-zA-Z-1-9]*\.[a-zA-Z]{1,}).*')
>>> p.match(domain).groups()
('google'、'co.uk')
したがって、「co.uk」のようなドメインの結果を確認し、そのような場合は結果に再度参加する必要があります。通常のドメインは正常に機能するはずです。複数のサブドメインがある場合、機能させることができませんでした。
正規表現や派手なモジュールのないワンライナー:
>>> domain = 'http://www.example.com/'
>>> '.'.join(domain.replace('http://','').split('/')[0].split('.')[-2:])
これを行う方法の1つは次のとおりです。
>>>import re
>>>str1 = 'http://www.domain.x/'
>>>p1 = re.compile('http://www.|/')
>>>out = p1.sub('',str1)