如何在R语言中提取文件路径最后一个正斜杠后的文件名
解决方案
你可以用以下两种方式实现需求,都能稳定提取最后一个斜杠后的文件名:
方法1:调整正则表达式,直接匹配目标内容
你之前的正则^.*(?=/)是正向预查匹配最后一个斜杠前的所有内容,要匹配斜杠后的内容可以直接用非斜杠字符匹配结尾的规则:
library(dplyr) library(stringr) df <- df %>% mutate(new_col = str_extract(list, "[^/]+$"))
正则[^/]+$的逻辑是:匹配所有不属于/的连续字符,且直到字符串结尾,刚好对应最后一个斜杠后的文件名部分。
方法2:使用R原生的basename()函数(更推荐)
R基础库自带专门处理文件路径的basename()函数,专门用于提取路径中的文件名部分,不需要手动写正则,兼容性更高(可自动适配不同操作系统的路径分隔符):
library(dplyr) df <- df %>% mutate(new_col = basename(list))
两种方法运行后得到的结果一致:
| list | new_col |
|---|---|
| 01_MESS/MS List 05-05-2021.pdf | MS List 05-05-2021.pdf |
| 02_PS Art/PDF/PS10.pdf | PS10.pdf |
| 04_Art/PDF/Plan/Drain PS 13.pdf | Drain PS 13.pdf |
| 05_AC/PDF/Detail/PS 54.pdf | PS 54.pdf |
内容的提问来源于stack exchange,提问作者Klini
相关产品推荐
相关产品推荐

