从动态文件夹路径字符串构建正则表达式模式

时间:2019-06-27 12:28:49

标签: c# regex

我想用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。'

如何以这种方式构建动态模式?

谢谢!

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表示第一个捕获组