如何从URL中提取纯域名主体,去除www前缀、.com/.org等后缀?
解决方案
你可以直接修改正则表达式,先过滤掉www.前缀,再捕获域名主体部分,忽略后面的.com/.org等通用顶级域名后缀,修改后的代码如下:
import re urls = ["http://arxiv.org/pdf/1611.08097", "https://doi.org/10.1109/tkde.2016.2598561", "https://www.scopus.com/inward/record.uri?partnerID=HzOxMe3b&scp=85116544648&origin=inward"] pattern = r'https?://(?:www\.)?([a-zA-Z0-9_]+)\..*' for url in urls: print(re.search(pattern, url).group(1))
运行后输出结果如下:
arxiv doi scopus
正则逻辑说明
(?:www\.)?:非捕获组,匹配0次或1次www.前缀,自动过滤带www的域名场景([a-zA-Z0-9_]+):捕获组,匹配你需要的纯域名主体部分\..*:匹配域名主体后面的点、顶级域名以及后续所有路径内容,这部分不会被捕获
如果遇到带com.cn这类国家顶级域名后缀的复杂场景,你可以补充后缀匹配规则,上述写法已经可以覆盖你给出的所有示例场景。
内容的提问来源于stack exchange,提问作者reinhardt
相关产品推荐
相关产品推荐

