Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用复杂模式在目录中搜索文件_C#_Search_File_Design Patterns - Fatal编程技术网

C# 使用复杂模式在目录中搜索文件

C# 使用复杂模式在目录中搜索文件,c#,search,file,design-patterns,C#,Search,File,Design Patterns,我正在寻找一个C#库,用于使用复杂模式(如Ant中使用的模式)从目录中获取文件或目录: dir1/dir2/**/SVN/*-->匹配位于dir1/dir2目录树中任意位置的SVN目录中的所有文件 **/test/**-->匹配路径中包含测试元素的所有文件,包括作为文件名的测试 我需要自己编写代码吗?从南特提取我想要的?或者这个图书馆存在,而我的谷歌技能糟糕透顶 Directory.GetFiles(stringpath,stringsearchpattern)不处理目录模式,也不处理目录

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

  • dir1/dir2/**/SVN/*
    -->匹配位于dir1/dir2目录树中任意位置的SVN目录中的所有文件
  • **/test/**
    -->匹配路径中包含测试元素的所有文件,包括作为文件名的测试
我需要自己编写代码吗?从南特提取我想要的?或者这个图书馆存在,而我的谷歌技能糟糕透顶


Directory.GetFiles(stringpath,stringsearchpattern)
不处理目录模式,也不处理目录模式(顺便说一句,这是一个很好的路径操作库)

自己编写也不会那么难


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

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

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

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

您愿意解释一下为什么否决这个选项吗?帮助我学习!这是一个开始,但您需要转义正则表达式字符,因为某些字符允许用于路径,如“\\”或“(“甚至”。”;但即使这样,它也会有很多缺陷,例如:“./somefolder/**/somefile.txt”=>第一个点表示当前文件夹第二个点是文件名的一部分;因此,在检查匹配项之前,您需要用当前目录展开第一个点,,,,这个答案是可以接受的!确定检查此*/some(dir)/a.txt“您需要替换”()为“\”(,”,“,”为“\”,然后才能获得正则表达式。这是您的“不会那么难”代码: