使用正则表达式过滤搜索文件

时间:2011-04-20 19:38:35

标签: c# regex directory

我需要找到一个以字符“prft”开头的文件,这个文件的名称是“prft0000.140”,“prft2100.140”,“prft1258.140”......等等。需要验证此文件是否存在于特定目录中。所以我有这个正则表达式找到它们,但我不知道怎么写过滤器来匹配。

List<string> prftFiles = (new DirectoryInfo(filePath))
                        .GetFiles(".", SearchOption.AllDirectories)
                        .Where(a => Regex.IsMatch(a.Name, "prft[^*]$"))
                        .Select(fi => fi.Name)
                        .ToList();

这不起作用“prft [^ *] $”,所以,它是怎么回事?

3 个答案:

答案 0 :(得分:2)

为什么不做List prftFiles = (new DirectoryInfo(filePath)).GetFiles("prft*", SearchOption.AllDirectories)

答案 1 :(得分:1)

这是你可以使用的正则表达式

string pattern = @"^(prft\d{4}\.\d{3})$";

但你可以通过通配符找到文件和*像其他人说的那样 如果你想要精确的数学模式prft 4位数。 3位数你应该使用正则表达式 因为prft *会找到任何名称以prft

开头的文件

答案 2 :(得分:0)

您实际上不需要在此使用正则表达式,因为Directory类在您选择的模式中具有搜索机制。

Directory.GetFiles("C:\SomeDirectory", "prft*");

* widlcard与任何东西相匹配。