重命名C#中的文件需要Regex

本文关键字:Regex 文件 重命名 | 更新日期: 2023-09-27 18:23:43

我需要一个正则表达式来重命名c#中的文件。我的文件名是22px-Flag_Of_Sweden.svg.png。我想将其重命名为sweden.png

因此,我需要regex。请帮帮我。

I have various files more than 300+ like below:
22px-Flag_Of_Sweden.svg.png   - should become sweden.png
13px-Flag_Of_UnitedStates.svg.png  - unitedstates.png
17px-Flag_Of_India.svg.png - india.png
22px-Flag_Of_Ghana.svg.png - ghana.png

这些实际上是国家的旗帜。我想提取Countryname.Fileextension。仅此而已。

重命名C#中的文件需要Regex

var fileNames = new [] {
    "22px-Flag_Of_Sweden.svg.png"
    ,"13px-Flag_Of_UnitedStates.svg.png"
    ,"17px-Flag_Of_India.svg.png"
    ,"22px-Flag_Of_Ghana.svg.png"
    ,"asd.png"
};
var regEx = new Regex(@"^.+Flag_Of_(?<country>.+)'.svg'.png$");

foreach ( var fileName in fileNames )
{
    if ( regEx.IsMatch(fileName))           
    {
        var newFileName = regEx.Replace(fileName,"${country}.png").ToLower();
        //File.Save(Path.Combine(root, newFileName));
    }
}

我不确定这在c#中会是什么样子(尽管正则表达式很重要,而不是语言),但在Java中会是这样的:

String input = "22px-Flag_Of_Sweden.svg.png";
Pattern p = Pattern.compile(".+_(.+?)''..+?(''..+?)$");
Matcher m = p.matcher(input);
System.out.println(m.matches());
System.out.println(m.group(1).toLowerCase() + m.group(2));

与您相关的是这一部分:

  ".+_(.+?)''..+?(''..+?)$"

把两组人连在一起。

我希望我现在知道一点C#:)

为尤金干杯。

这将返回第一个捕获组中的国家/地区:([a-zA-Z]+)'.svg'.png$

我不知道c#,但正则表达式可能是:

^.+_('pL+)'.svg'.png

替换部件为:$1.png