【问题标题】:Search file in directory using complex pattern使用复杂模式在目录中搜索文件
【发布时间】:2008-10-01 16:20:02
【问题描述】:

我正在寻找一个 C# 库,用于使用类似于 Ant 中的复杂模式从目录中获取文件或目录:

  • dir1/dir2/**/SVN/* --> 匹配所有SVN目录中位于目录树dir1/dir2下任意位置的文件
  • **/test/** --> 匹配路径中包含 test 元素的所有文件,包括文件名 test。
  • ...

我需要自己编码吗?从 NAnt 中提取我想要的东西?或者这个库存在,我的谷歌技能很烂。

Directory.GetFiles(String path, String searchPattern) 不处理目录模式,NDepend.Helpers.FileDirectoryPath 也不处理(顺便说一句,它是一个很棒的路径操作库)

【问题讨论】:

    标签: c# search file design-patterns


    【解决方案1】:

    自己编写代码不会那么难。

    只需使用正确的正则表达式和 System.IO 方法来构建完整路径

    【讨论】:

    【解决方案2】:

    您是否愿意将“*”定义为“除斜线之外的任何内容”和“**”定义为“任何内容”?如果是这样,正则表达式转换似乎很简单。

    *   -> [^\/]*
    **  -> .*
    

    然后就是递归枚举所有文件,并检查它们的路径是否与正则表达式匹配。

    【讨论】:

    • 你愿意解释为什么你投了反对票吗?帮我学习!
    • 这是一个开始,但您需要转义正则表达式字符,因为路径允许某些字符,例如“\\”或“(”甚至“。”;但即使这样,它也会有很多缺陷例如:“./somefolder/**/somefile.txt”=>第一个点表示当前文件夹第二个是文件名的一部分;因此您需要在检查匹配之前用当前目录扩展第一个点,,,,跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多