2012-02-06 72 views
0

我需要一個在c#中重命名文件的正則表達式。我的文件名是22px-Flag_Of_Sweden.svg.png。我希望它重命名爲sweden.png在C中重命名文件所需的正則表達式#

因此,我需要正則表達式。請幫幫我。

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。就這樣。

+3

爲什麼你需要一個正則表達式? – jglouie 2012-02-06 14:38:03

+1

什麼是規則(用於查找「瑞典」部分)?你有什麼嘗試? – 2012-02-06 14:39:19

+0

@jglouie:你會做什麼如果你需要重新命名300多個類似的文件到一些想要的文件? – 2012-02-06 14:40:36

回答

1
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)); 

    } 
} 
+1

因爲我使用了一些第三方工具,但我接受你的答案,因爲它將來需要。謝謝... – 2012-02-06 15:14:46

1

我並不很清楚如何做到這一點看在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#:)

乾杯尤金。

1

這將第一個捕捉組返回國:([a-zA-Z]+)\.svg\.png$

1

我不知道C#,但正則表達式可能是:

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

和替換部分是:$1.png