2011-09-27 47 views
1

好日子,VB.NET正則表達式從文本文件解析有效路徑

我試圖解析包含多個Windows路徑的文本文件;如果可能,我想使用正則表達式,並使用VB.NET。

該文件的格式有點像這樣:

M - Network Mode 
C:\Client\System\ - System Path 
C:\Client\Products\ - Product Path 
C:\Client\Util\ - Utility Path 
C:\PROG\ - Program Path 

等等。第一行在「描述」之前包含單個字母 - 即空格,連字符,空格,然後是字段的描述。文件中的每個連續行都包含一個Windows路徑(始終帶有反斜槓),接下來是連字符和說明。整個文件通常不超過30行。首先,我想逐行讀取文件的文本,並使用VB的Split()方法分隔路徑和描述,將路徑存儲在一個數組中,並將描述存儲在另一個數組中。不過,理想情況下,我想利用正則表達式來簡單地解析文件中的路徑,然後解析連字符後面的文本。我對正則表達式相對缺乏經驗,那麼最好的方法是什麼?有沒有辦法讓正則表達式返回所有匹配的集合,例如文件路徑的所有匹配,以及連字符後文本的所有匹配的另一個匹配?

謝謝。

回答

0

這似乎對測試數據的工作

(?<Path>.+\\)\s\-\s(?<Description>.+)

用法:

Private oRegEx as RegEx = New RegEx("(?<Path>.+\\)\s\-\s(?<Description>.+)", RegExOptions.Compiled) 
Public Sub DoTheMatching() 
    Dim tInputContent as String = String.Empty ' Fill this with your file contents 
    Dim tPath as String = String.Empty 
    Dim tDescription As String = Stringh.EMpty 
    For Each tMatch as Match In oRegEx.Matches(tInputContent) 
    tPath = tMatch.Groups("Path").Value 
    tDescription = tMatch.Groups("Description").Value 
    Next 
End Sub 

我沒編譯這個,有可能是拼寫錯誤。

0

這(很簡單,受增強)正則表達式你想要做什麼:

^(.+\\) - (.+)$ 

您可以將其應用到你的日誌文件中的每一行,然後使用反向引用(\ 1 \ 2)捕獲相應的匹配(路徑(包括尾部反斜槓)和描述)。

這應該即使有 「奇怪」 的文件名條目這樣的正常工作:

C:\Some - \ - WeirdPath\ - Description 

(\ 1返回 「C:\一些 - \ - 文件名\」 和\ 2返回 「說明」)。