如何在R中使用gsub提取文件名中连字符间的017?
用R语言的gsub函数提取文件名中的特定字段
假设你已经有了文件名字符串,以下是具体实现方法:
基础提取方案(针对固定三位数字)
先定义文件名变量,再通过正则匹配提取目标内容:
# 定义文件名 filename <- "gameofdice-017-1.txt" # 使用gsub提取两个横杠之间的三位数字 target_num <- gsub("^.*-(\\d{3})-.*$", "\\1", filename) # 输出结果 print(target_num) # 返回 "017"
正则表达式解释
^:锚定字符串开头.*-:匹配从开头到第一个-的所有内容(即gameofdice-)(\\d{3}):捕获连续三位数字,括号代表捕获组,后续用\\1引用该组内容-.*$:匹配从第二个-到字符串结尾的所有内容(即-1.txt)- gsub会将整个字符串替换为捕获组里的内容,最终得到目标值
017
通用提取方案(适配任意长度的中间字段)
如果中间字段长度不固定,仅需提取两个横杠之间的内容,可把正则中的\\d{3}换成[^-]+(匹配任意非横杠字符):
target_content <- gsub("^.*-([^-]+)-.*$", "\\1", filename) print(target_content) # 同样返回 "017"
批量处理文件列表
如果要处理文件夹下的同类文件名,可结合list.files()批量操作:
# 获取文件夹下所有txt文件 file_list <- list.files(path = "你的文件夹路径", pattern = "\\.txt$", full.names = FALSE) # 批量提取中间字段 extracted_list <- sapply(file_list, function(x) gsub("^.*-([^-]+)-.*$", "\\1", x))
内容的提问来源于stack exchange,提问作者jc2525
相关产品推荐
相关产品推荐

