C# 正则表达式-从文件名中删除(1)

C# 正则表达式-从文件名中删除(1),c#,regex,C#,Regex,我有一些同名的文件,但附加了“(1)”“(2)”“(3)”。不幸的是,我对正则表达式很反感。有人能帮我用正则表达式字符串从整个文件名中去掉尾随(2)吗 例如: MyFile(1).jpg >> MyFile.jpg AnotherFile(3).docx >> AnotherFile.docx Last.Example.Boo(999).xlsx >> Last.Example.Boo.xlsx 非常感谢 可以这样做: string name = "Last

我有一些同名的文件,但附加了“(1)”“(2)”“(3)”。不幸的是,我对正则表达式很反感。有人能帮我用正则表达式字符串从整个文件名中去掉尾随(2)吗

例如:

MyFile(1).jpg >> MyFile.jpg
AnotherFile(3).docx >> AnotherFile.docx
Last.Example.Boo(999).xlsx >> Last.Example.Boo.xlsx

非常感谢

可以这样做:

string name = "Last.Example.Boo(999).xlsx";
string newName = Regex.Replace(Path.GetFileNameWithoutExtension(name), @"\(\d+\)$", "") 
    + Path.GetExtension(name);

这将删除文件名中最后出现的
(任何编号)

通过regex,它将这样做

string result = Regex.Replace(str, @"\(\d+\)(?=\.[^.]+$)", "");

可能甚至不需要正则表达式。将文件名拆分为basename+扩展名,然后根据最后一个
的位置执行一个简单的子字符串操作就可以了…我本来打算这么做的,但是如果(2)已经存在,我会得到像“myfilename(2)(3).gif”这样的文件。我想去掉它,这样我就可以依次测试(1)然后(2)然后(3)…直到我发现一个文件名未被使用。这只是意味着您没有使用“剥离”版本来构建新文件名。