VB.NET从字符串中提取文件路径

时间:2014-08-07 05:11:13

标签: regex vb.net

我对正则表达式不太满意,我需要帮助完成以下任务:

在VB.NET中,我需要从随机给定的字符串中提取一个或多个FILE路径 - 精确处理命令行参数。例如:

我需要这样:

"C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE" /n "C:\Users\administrator\Documents\test.docx" /o ""

提取此数组:

C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE

C:\Users\administrator\Documents\test.docx

试图在这里搜索,但没有帮助我。谢谢你的帮助!

编辑:根据回复,我创建了这段代码。但它只提取第一条路径,而不是第二条路径:

编辑2:基于第二个响应(标记为正确)我编辑了我的代码并立即开始工作!

´Public Function GetProcessOpenedFiles(ByVal p As Process) As List(Of String)
    Dim newlst As New List(Of String)

    Dim strCmdArgs As String = GetProcessCommandLine(p)
    Dim strExePath As String = GetProcessExePath(p).ToLower

    Dim expression As String = """(.+?)"""
    Dim mc As MatchCollection = Regex.Matches(strCmdArgs, expression)

    For Each m As Match In mc
        Dim strMatch As String = m.ToString.ToLower
        strMatch = Mid(strMatch, 2)
        strMatch = strMatch.Remove(strMatch.Length - 1)

        If strExePath <> strMatch Then
            If IO.File.Exists(strMatch) AndAlso newlst.Contains(strMatch) = False Then
                newlst.Add(strMatch)
            End If
        End If
    Next

    Return newlst
End Function´

2 个答案:

答案 0 :(得分:1)

从开头"到下一个"字符抓取所有内容。

^"([^"]+)"

你已经完成了。

答案 1 :(得分:1)

您可以使用此正则表达式:

"(.+?)"

<强> Working demo

MATCH 1
1.  [1-61]  `C:\Program Files (x86)\Microsoft Office\Office15\WINWORD.EXE`
MATCH 2
1.  [67-109]    `C:\Users\administrator\Documents\test.docx`