好的我如何使用正则表达式删除http AND / OR www只是为了 http://www.domain.com/ 进入 domain.com
假设x为任何类型的TLD或cTLD
输入示例:
www.domain.x
输出:
domain.x
答案 0 :(得分:7)
不要使用正则表达式,使用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
>>>
答案 1 :(得分:4)
如果你真的想使用正则表达式而不是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:])
答案 2 :(得分:1)
以下是其中一种方法:
>>>import re
>>>str1 = 'http://www.domain.x/'
>>>p1 = re.compile('http://www.|/')
>>>out = p1.sub('',str1)