如何用正则表达式提取URL中的主页面(根域名部分)
提取URL主页面地址的R语言解决方案
基础正则替换方案(gsub)
直接使用gsub配合精准正则表达式,就能保留URL的协议+域名+根路径部分,去除后续路径:
# 示例URL向量 url_vector <- c( "https://arealdata-api.miljoeportal.dk/some/path/data", "http://example.org/page/1", "https://sub.domain.com/" ) # 提取主页面地址 base_urls <- gsub("^(https?://[^/]+/).*", "\\1", url_vector) # 输出结果 base_urls
正则表达式说明
^:匹配字符串起始位置(https?://[^/]+/):捕获需要保留的核心部分:https?://:兼容http和https协议(?表示s为可选字符)[^/]+:匹配完整域名,直到遇到第一个/为止/:保留根路径的斜杠,确保主页面地址格式完整
.*:匹配域名根路径之后的所有多余内容\\1:将整个URL替换为捕获组中保留的主页面地址
运行后会得到预期结果:
[1] "https://arealdata-api.miljoeportal.dk/" "http://example.org/" "https://sub.domain.com/"
专用包方案(更稳定)
如果需要处理带端口、特殊字符等复杂URL,推荐使用urltools包,无需手动写正则,兼容性更强:
# 安装并加载包 install.packages("urltools") library(urltools) # 提取主页面地址(自动拼接协议、域名和根路径) base_urls <- paste0(protocol(url_vector), "://", domain(url_vector), "/")
内容的提问来源于stack exchange,提问作者Derek Corcoran
相关产品推荐
相关产品推荐

