2013-04-18 47 views
0

我想篩選使用正則表達式對象bot在fileSytem Ftp研究搜索。 如果我運行這個片段在FTP上它的工作原理,但如果我在本地文件系統上運行它,它不響應:爲什麼LINQ查詢與正則表達式語句被鎖定

在FTP上

string[] filesArray = ftp.ListDirectory(@"/" + SrcPath + @"/").Where(fileName => Regex.IsMatch(fileName, /*@"^[a-zA-Z0-9\-]*?$"*/"(.*)"+ SrcMask, RegexOptions.IgnoreCase)).ToArray(); 

本地文件系統中

String[] files = Directory.GetFiles(SrcPath).Where(fileName => Regex.IsMatch(fileName, "(.*)" + *.pdf, RegexOptions.IgnoreCase)).ToArray() 

在做我注意到,當它遇到一個「無pdf」文件,如果條件,聲明被鎖定:

string input = "*.pdf"; 
Regex regx = new Regex("(.*)"+input); 
String[] filesName = Directory.GetFiles("c:\\temp\\").Select(fileName => new FileInfo(fileName).FullName).ToArray(); 
foreach(String s in filesName) 
{ 
    if (regx.IsMatch(s)) 
    { 
     File.Copy(s, "C:\\temp\\files\\"+s.Split('\\').Last(), true); 
     count++; 
    } 
    Console.WriteLine(count);    
} 

回答

1

簡短的回答是,

(.*)* 

原因回溯地獄時,正則表達式匹配失敗。

擺脫不必要的第二個*,或更好地使用\.pdf$爲正則表達式。