2012-03-16 54 views
0

讓我在高層向您解釋我在C#中想要做的事情(考慮到我有這個問題,語言是相當不相干的)。在文件中搜索的非典型正則表達式

我有一大堆的文件(讓我們說的文本文件),其中包含了大量的數據和目錄結構鏈接,這些多個文件

例如: - 文件myfile.txt的將是這樣的。 。

​​

我要做的就是讓目錄結構,他們是在所有這些文件的列表幸運的是,所有的人都在d:/但可以在最大3個級別的目錄到內,其中該文件可能存在。

我寫的所有代碼和所有我糊塗了是正則表達式來查找文件模式。這是算法中,我不得不在腦海中查找文件: - :/ 2.搶文本出發/直到 1.搜索文件,以查找d「」 (點)遇到(這將構成目錄結構和文件名) 3.然後搶下3/4字符(文件擴展名) - 將有不同類型的MS Office文件,我就放心了。太多關於是否要尋找3個或4個字符後(點)

讓我總結一下,什麼我堅持 - 正則表達式搜索模式來尋找///filename.extension

,然後我需要的文件名,看是否存在該文件,然後再通過它的內容。

任何幫助表示讚賞。

回答

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(); 
0

我試圖瞭解儘可能更多鈔票你的需求。

這裏是一個正則表達式會發現任何Windows或UNC(與文件名,包括擴展名與你要求的3個或4個字符)路徑匹配

(?:\b[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*\.[^\\/:*?"<>|\r\n]{3,4}

希望這有助於。