R文件名截断

时间:2013-07-24 21:16:25

标签: r filenames truncate

我们有一堆表格的文件名:

filename1(412)(4141567).csv, filename2(4214985).csv, filename3(34543).csv, filename4(3456984).csv, filename5(34582).csv, filename6(jrh)(234145).csv

我们要做的是截断文件名,以便我们只剩下

filename1(412),filename2,filename3,...,filename6(jrh). 

即。切断名称的结尾,直到最后一个“(”括号。

我们不能使用子字符串,因为每个文件名的长度都不完全相同。我发现以下代码:

sub("(.*?)[(].*", "\\1", files)

不起作用,因为某些文件名有两组括号。

2 个答案:

答案 0 :(得分:1)

你发布的最后一个正则表达式非常接近,试试这个:

sub('(.*)\\(.*', '\\1', files)

答案 1 :(得分:0)

您可以使用运行的tools::file_path_sans_ext(仅删除文件扩展名):

sub("([^.]+)\\.[[:alnum:]]+$", "\\1", x)

编辑

我没有看到您要删除最后一个(...)

f <- c("filename1(412)(4141567).csv", "filename2(4214985).csv", "filename3(34543).csv", "filename4(3456984).csv", "filename5(34582).csv", "filename6(jrh)(234145).csv")

sub("([^.]+)\\([^)]*\\)\\.[[:alnum:]]+$", "\\1", f)
#[1] "filename1(412)" "filename2"      "filename3"      "filename4"      "filename5"      "filename6(jrh)"