如何修改R语言函数:仅保留指定URL后缀,其余转为.com?
问题解决:修改URL后缀的R函数
你的需求是将URL后缀替换为.com,但保留.net、.co、.org、.news、.tv这些后缀,原函数失效大概率是没考虑大小写差异、或未处理无后缀的URL情况,以下是修正后的函数:
library(stringr) modify_suffix <- function(url) { # 提取URL最后一个点后的后缀部分 suffix <- str_extract(url, "\\.([a-zA-Z0-9]+)$") # 定义需要保留的后缀列表 keep_suffixes <- c(".net", ".co", ".org", ".news", ".tv") # 两种情况需要修改:后缀不在保留列表,或者URL本身没有后缀 if (is.na(suffix) || !tolower(suffix) %in% tolower(keep_suffixes)) { if (!is.na(suffix)) { # 有后缀则替换为.com url <- str_replace(url, "\\.[a-zA-Z0-9]+$", ".com") } else { # 无后缀则直接添加.com url <- paste0(url, ".com") } } return(url) } # 应用到数据列 domo_data$domain <- sapply(domo_data$domain, modify_suffix)
关键修改说明:
- 大小写兼容:用
tolower()统一转换为小写判断,避免.NET、.ORG这类大写后缀被误替换。 - 无后缀URL处理:针对不带后缀的URL(比如
example),直接在末尾追加.com,补上原函数遗漏的逻辑。 - 正则严谨性:将
\\w+$替换为[a-zA-Z0-9]+$,明确只匹配字母数字,避免意外匹配到下划线(URL后缀通常不含下划线)。
测试验证效果:
example.org→ 保留为example.orgexample.xyz→ 修改为example.comexample.NET→ 保留为example.NET(不改变原大小写,仅判断后缀内容)example→ 修改为example.com
内容的提问来源于stack exchange,提问作者Robb Danger
相关产品推荐
相关产品推荐

