2016-04-07 52 views
-1

我想在C#中的目錄中篩選文件。c#如何編寫正則表達式篩選器

我覺得正則表達式是最好的方式,但我在寫的麻煩表達......有人能幫助我...

這裏我的代碼:

Regex reg = new Regex(Expr); 
var files = Directory.GetFiles(Dir, "*.txt") 
       .Where(path => reg.IsMatch(path)) 
       .ToList(); 

我表達式expr會匹配所有以「fileXXX」開頭的文件,而不是以「_L.txt」結尾,我該如何解決我的問題?

謝謝!

+0

這裏是[類似的](http://stackoverflow.com/questions/9653201/directory-getfiles-show-only-files-starting-with-a-numeric-value)。你的'path'包含文件路徑,而不僅僅是文件名。 –

+0

什麼是'XXX'? 3位數字?如果這是一個文字,你就不需要這裏的正則表達式。 –

回答

0

如果fileXXX是一個文字,你可以實現你需要區區StartsWithEndsWith什麼:

​​

請注意,您path包含包括文件夾路徑文件路徑,而不僅僅是文件名稱。這就是爲什麼您需要使用Path.GetFileNameWithoutExtension(path)來執行檢查。

否則,使用正則表達式像

var files1 = Directory 
    .GetFiles(Dir, "*.txt") 
    .Where(path => Regex.IsMatch(Path.GetFileNameWithoutExtension(path), @"^fileXXX.*(?<!_L)$")) 
    .ToList(); 

^fileXXX.*(?<!_L)$一個之前與fileXXX開始,不_L結束(任何文本(在這裏,沒有擴展名的文件名)匹配由於負回顧後(?<!_L)字符串錨點結尾$)。