好的,我如何使用正则表达式删除 http和/或www 只是为了让http://www.domain.com/进入domain.com
假设 x 为任何类型的 TLD 或 cTLD
输入示例:
www.domain.x
输出:
域.x
好的,我如何使用正则表达式删除 http和/或www 只是为了让http://www.domain.com/进入domain.com
假设 x 为任何类型的 TLD 或 cTLD
输入示例:
www.domain.x
输出:
域.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()
(“谷歌”,“co.uk”)
因此,您必须检查“co.uk”等域的结果,并在这种情况下再次加入结果。普通域应该可以正常工作。当您有多个子域时,我无法使其工作。
没有正则表达式或花哨模块的单行代码:
>>> domain = 'http://www.example.com/'
>>> '.'.join(domain.replace('http://','').split('/')[0].split('.')[-2:])
这是其中一种方法:
>>>import re
>>>str1 = 'http://www.domain.x/'
>>>p1 = re.compile('http://www.|/')
>>>out = p1.sub('',str1)