R语言如何批量去除文件名固定前后缀提取指定内容
R 提取固定前后缀字符串核心内容实现方案
你可以根据自己的使用习惯选择以下任意一种方案,都可以直接运行得到预期结果:
基础R原生方案(无需安装任何第三方包,兼容性最好)
逻辑是通过正则匹配固定的前缀、后缀做替换,推荐用单次捕获的写法,代码简洁效率高:# 构造示例数据(和提供的测试数据完全一致) df<-data.frame( Tables=c("Export_A1.xlsx","Export_A2.xlsx","Export_A10.xlsx")) # 单次正则捕获前后缀中间的核心内容 df$core_name <- sub("^Export_(.*)\\.xlsx$", "\\1", df$Tables)如果觉得正则不好记,也可以拆成两步替换,逻辑更直白:
df$core_name <- gsub("^Export_", "", df$Tables) # 移除固定前缀 df$core_name <- gsub("\\.xlsx$", "", df$core_name) # 移除固定后缀注意正则里的
^代表字符串开头、$代表字符串结尾,能避免误删文件名中间偶然出现的Export_或者.xlsx字符工具包简化方案(适合日常做大量数据清洗的场景)
如果你日常用tidyverse生态做数据处理,可以用stringr包降低正则写错的概率,代码可读性更强:# 首次使用先安装:install.packages("stringr") library(stringr) df$core_name <- str_remove(df$Tables, "^Export_") |> str_remove("\\.xlsx$")如果是处理真实的文件路径,还可以用R自带的
tools包专门处理文件扩展名的函数,不用自己写后缀的正则:# tools是R内置包,无需单独安装 df$core_name <- sub("^Export_", "", tools::file_path_sans_ext(df$Tables))
以上任意一种方法运行后,得到的数据框结果如下,完全匹配预期效果:
Tables core_name 1 Export_A1.xlsx A1 2 Export_A2.xlsx A2 3 Export_A10.xlsx A10
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

