我有一个 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) 依赖于特定的文件扩展名。