让我从高层面向你解释一下我在C#中尝试做什么(考虑到我的问题,语言非常不相关)。
我有一堆文件(让我们说文本文件),其中包含大量数据和目录结构链接到那些更多文件
例如: - 文件myfile.txt将如下所示..
This is a text file. This file has very few lines of data like bla bla bla and links like
D:/Presentations/Sales/Demo.pptx
and more links like
D:/Word_documents/Studies/worddoc.doc
我要做的是获取所有这些文件的列表以及它们所在的目录结构。幸运的是,所有这些文件都在D:/中,但是最多可以有3个级别的目录到其中的文件中可能存在。
我已经编写了所有代码,而我所困扰的只是寻找文件模式的正则表达式。这是Algo,我在脑海中寻找文件: - 1.搜索要查找的文件D:/ 2.抓住文本开始/直到'。'遇到(点)(这将构成目录结构和文件名) 3.然后抓取下一个3/4字符(文件扩展名) - 会有不同类型的MS Office文件,我不会太担心是否要在。(点)之后查找3或4个字符
让我总结一下我坚持的用 - 正则表达式搜索模式来查找/// filename.extension
然后我需要获取文件名以查看文件是否存在,然后查看其内容。
感谢任何帮助。
答案 0 :(得分:0)
稍微有点回溯,应该这样做:
^D:/.*/(.*)
您应该将它与多线选项一起使用。
例如:
Regex rx = new Regex("^D:/.*/(.*)", RegexOptions.Multiline);
var str = @"This is a text file. This file has very few lines of data like bla bla bla and links like
D:/Presentations/Sales/Demo.pptx
and more links like
D:/Word_documents/Studies/worddoc.doc";
var matches = rx.Matches(str);
var names = matches.Cast<Match>().Select(p => p.Groups[1].ToString()).ToArray();
答案 1 :(得分:0)
我尽可能地了解你的需求。
这是一个正则表达式,可以找到任何Windows或UNC(文件名包括你请求的3或4个字符的扩展名)路径匹配
(?:\b[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*\.[^\\/:*?"<>|\r\n]{3,4}
希望这有帮助。