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

本文关键字:过滤器 搜索 文件 正则表达式 | 更新日期: 2023-09-27 17:51:24

我需要找到一个以字符"prft"开头的文件,这个文件的名称是"prft0000.140", " prft210.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[^*]$",那么,它是怎么回事??

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

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

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

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

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

开头的文件

这里实际上不需要使用Regex,因为Directory类在您选择的模式中有一个搜索机制。

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

*通配符匹配任何内容。