我想用Directory.EnumerateDirectories
遍历文件夹,并检查每个路径中是否存在以特定模式开头的文件夹。
static void SearchFolder(string searchDirectory)
{
foreach (var path in Directory.EnumerateDirectories(searchDirectory))
{
var pattern = folderName + @"\10.*";
var isProjectFolderMatch = Regex.Match(path, pattern);
if (isProjectFolderMatch.Success)
{
Console.WriteLine($"found: {path}");
}
}
}
但是正则表达式匹配抛出错误
'C:\ Folder \ 10. *'-引用未定义的组号1。'
如何以这种方式构建动态模式?
谢谢!
答案 0 :(得分:1)
似乎您正在寻找DirectoryInfo类:例如,您有c:\MyData\MyPath\10folder
想要与10
中的10folder
相匹配。如果是您的情况:
static void SearchFolder(string searchDirectory) {
var folders = Directory
.EnumerateDirectories(searchDirectory)
.Where(path => new DirectoryInfo(path).Name.StartsWith("10"));
foreach (var folderName in folders)
Console.WriteLine($"found: {folderName}");
}
如果您想要正则表达式,请将其设置为
.Where(path => Regex.IsMatch(new DirectoryInfo(path).Name, "10.*"));
请注意,"10.*"
模式表示从10
开始,而原始模式@"\10.*"
使用\1
表示第一个捕获组。