我有一个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