我们有一堆表格的文件名:
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)
不起作用,因为某些文件名有两组括号。
答案 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)"