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

如何在R语言中从文件名提取数字(适配单/多位数)

R语言提取文件名中的数字向量

先还原你的文件名列表:

file_names <- c("EXACT_46401#1.stats.json", "EXACT_46401#11.stats.json", "EXACT_46401#12.stats.json", 
                "EXACT_46401#13.stats.json", "EXACT_46401#14.stats.json", "EXACT_46401#15.stats.json", 
                "EXACT_46401#16.stats.json", "EXACT_46401#7.stats.json", "EXACT_46401#18.stats.json", 
                "EXACT_46401#19.stats.json")

方法1:基础R正则匹配

用sub函数精准定位#之后、.之前的数字序列,提取后转为数值型向量:

num_vec <- as.numeric(sub("^.*#(\\d+)\\..*$", "\\1", file_names))
num_vec
# 输出:[1]  1 11 12 13 14 15 16  7 18 19

正则规则说明:

  • ^.*#:匹配从文件名开头到#的所有字符
  • (\\d+):捕获一个或多个连续数字(括号用于标记需要提取的目标内容)
  • \\..*$:匹配从.到文件名结尾的所有字符
  • \\1:引用捕获到的第一个分组(也就是我们需要的数字部分)

方法2:用stringr包简化操作

如果习惯使用tidyverse工具链,stringr::str_extract可以更直观地提取目标数字:

library(stringr)
num_vec <- as.numeric(str_extract(file_names, "(?<=#)\\d+"))
num_vec
# 输出:[1]  1 11 12 13 14 15 16  7 18 19

正则规则说明:

  • (?<=#):正向断言,确保目标数字的前一个字符是#(但不会把#包含到提取结果里)
  • \\d+:匹配一个或多个连续数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:10:45