如何用gsub从文件名中提取首个整数?
提取文件名中的目标数字
你可以通过以下几种方式同时完成前后多余字符的去除,得到目标结果23:
方法1:链式调用两次gsub
先去除开头的非数字内容,再去除结尾的多余部分:
digs = "filepath/23-00.xlsx" gsub("\\-\\d+\\.xlsx$", "", gsub("^\\D+", "", digs)) [1] "23"
方法2:使用单个正则表达式(推荐)
利用正则捕获组直接提取中间的数字部分,一次完成替换:
digs = "filepath/23-00.xlsx" sub("^\\D+(\\d+)\\-\\d+\\.xlsx$", "\\1", digs) [1] "23"
这里的正则逻辑是:
^\\D+匹配文件名开头所有非数字的内容(\\d+)捕获我们需要保留的连续数字(也就是23)\\-\\d+\\.xlsx$匹配数字后面的-00.xlsx部分- 最后用
\\1替换整个字符串,只保留捕获到的数字
方法3:提取所有数字再截取对应部分
如果文件名里只有这一组需要的连续数字,也可以直接提取所有数字字符后截取:
digs = "filepath/23-00.xlsx" substr(gsub("\\D", "", digs), 1, 2) [1] "23"
不过这种方法依赖目标数字的长度固定,灵活性不如前两种。
内容的提问来源于stack exchange,提问作者Mark Davies
相关产品推荐
相关产品推荐

