我有一個C#應用程序,它使用搜索功能來查找目錄中的所有文件,然後在列表中顯示它們。我需要能夠根據擴展名(可能使用搜索功能)和目錄(例如,阻止任何在「測試」或「調試」目錄中顯示)過濾文件。正則表達式解析出文件名和部分路徑,有條件地
我當前的代碼是一樣的東西:
Regex filter = new Regex(@"^docs\(?!debug\)(?'display'.*)\.(txt|rtf)");
String[] filelist = Directory.GetFiles("docs\\", "*", SearchOption.AllDirectories);
foreach (String file in filelist)
{
Match m = filter.Match(file);
if (m.Success)
{
listControl.Items.Add(m.Groups["display"]);
}
}
(這是某種程度的簡化和鞏固,是從文件中讀取一個字符串創建實際的正則表達式,我做更多的錯誤之間的檢查)。
我需要能夠挑選出一段(通常是相對路徑和文件名)作爲顯示名稱,而忽略任何具有特定文件夾名稱的文件作爲其路徑的一部分。例如,對於這些文件,只能用+ S的人應符合:
+ docs\info.txt
- docs\data.dat
- docs\debug\info.txt
+ docs\world\info.txt
+ docs\world\pictures.rtf
- docs\world\debug\symbols.rtf
我正則表達式適用於大多數的,除了我不知道如何使它失敗的最後一個文件。有關如何完成這項工作的任何建議?
在你的正則表達式中仍然出現拼寫錯誤:你需要避開反斜槓('\\'),否則它們會將你的先行的括號轉義爲文字圓括號。 – 2010-09-08 08:27:33