full.path = 'C:\Users\me\Desktop\Data\my_file.csv'
我无法确定正确的正则表达式,以便仅保留这个内容。
essential.name = 'my_file'
很抱歉,我一直无法正确编码最后一个反斜杠
> full.path = 'C:\\Users\\me\\Desktop\\Data\\my_file.csv'
> sub(".*\\\\([^.]*).*", "\\1", full.path)
[1] "my_file"
请查看在线R演示.
详细信息:
.*
- 匹配0个或多个字符,尽可能多地匹配直到最后一个...\\\\
- 匹配字面上的\
符号([^.]*)
- 第一组捕获除点号以外的任意字符.*
- 匹配其余的字符直到结尾。\\1
只是将第一组的内容插入到结果中。
sub(".*\\\\(.*?)(?:\\.[^.]*)?$", "\\1", full.path)
。它将支持带有点的文件名,同时仍然允许没有点的文件名。 - Wiktor Stribiżewtools
中的basename
和file_path_sans_ext
来提取文件名。tools::file_path_sans_ext(basename(full.path))
#[1] "my_file"
如果我们需要使用正则表达式,可以使用 gsub
gsub(".*\\\\|\\..*$", "", full.path)
#[1] "my_file"
full.path = 'C:\\Users\\me\\Desktop\\Data\\my_file.csv'
full.path
在Windows上无法工作。我认为你需要两个反斜杠。 - akrun^.*\\([^.]*)[.].*$
但是为什么要使用正则表达式呢? - Tensibai