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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:02:40