You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言的Regex提取URL主域名(去除前缀子域名)

嘿,我来帮你搞定用R语言正则提取主域名的需求!下面是具体的实现思路和代码示例:

核心实现思路

你的需求可以拆成两个关键步骤,用正则表达式分步处理会更清晰易懂:

  1. 移除URL参数部分:把?及其后面的所有内容全部删掉,先得到干净的域名(不带参数)
  2. 剥离前缀子域名:去掉域名最开头的子域名.部分,只保留主域名(比如week.sddhdjs.net → sddhdjs.net)
R语言代码实现

首先准备你的输入数据,然后按步骤处理:

# 输入的URL向量
input_urls <- c("week.sddhdjs.net", "sate.ghdutdjd.org", "west.lakmeouh.com", "dhdj.ckisnsns.us?mdeddde", "werst.urhsbss.xyz?swasrr")

# 第一步:移除?及之后的所有参数
clean_domains <- gsub("\\?.*$", "", input_urls)

# 第二步:移除开头的子域名前缀(字母数字+点)
main_domains <- gsub("^[a-z0-9]+\\.", "", clean_domains, ignore.case = TRUE)

# 输出结果
cat(main_domains, sep = " ")

运行这段代码后,就能得到你想要的输出:

sddhdjs.net ghdutdjd.org lakmeouh.com ckisnsns.us urhsbss.xyz

(注:你给出的期望输出里漏了ghdutdjd.org,应该是笔误,代码处理后会正确保留这个主域名)

正则表达式解释
  • 移除参数的正则:\\?.*$

    • \\?:转义匹配问号(因为问号是正则的特殊字符,必须加反斜杠转义)
    • .*:匹配任意字符任意次数
    • $:匹配行尾,确保把问号到URL结尾的所有内容都删掉
  • 移除子域名的正则:^[a-z0-9]+\\.

    • ^:匹配行开头,确保只处理最前面的子域名
    • [a-z0-9]+:匹配一个或多个字母/数字(覆盖大部分子域名的格式)
    • \\.:转义匹配点号,对应子域名后面的那个点
    • ignore.case = TRUE:可选参数,用来兼容带大写字母的子域名(比如Week.sddhdjs.net也能正确处理)
可选:一步到位的写法

如果你想把两步合并成一行代码,可以嵌套gsub:

main_domains <- gsub("^[a-z0-9]+\\.", "", gsub("\\?.*$", "", input_urls), ignore.case = TRUE)

内容的提问来源于stack exchange,提问作者myamulla_ciencia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:56:54