我需要找到一个以字符“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 [^ *] $”,所以,它是怎么回事?
答案 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与任何东西相匹配。