我有一个包含文件名文本列的 data.frame。我想返回不带路径或文件扩展名的文件名。通常,我的文件名已编号,但不一定非要编号。例如:
df<-data.frame(data=c("a","b"),fileNames=c("C:/a/bb/ccc/NAME1.ext","C:/a/bb/ccc/d D2/name2.ext"))
我想返回相当于
df<-data.frame(data=c("a","b"),fileNames=c("NAME","name"))
但我无法弄清楚使用 gsub 执行此操作的光滑正则表达式。例如,我可以去掉扩展名(前提是文件名以数字结尾):
gsub('([0-9]).ext','',df[,"fileNames"])
虽然我一直在尝试各种模式(通过阅读本网站上的正则表达式帮助文件和类似解决方案),但我无法让正则表达式返回最后一个“/”和第一个“.”之间的文本。非常感谢您对类似问题的任何想法或转发!
我得到的最好的是:
gsub('*[[:graph:]_]/|*[[:graph:]_].ext','',df[,"fileNames"])
但是这 1) 并没有去掉所有的前导路径字符,并且 2) 依赖于特定的文件扩展名。