我对正则表达式不太满意,我需要帮助完成以下任务:
在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´
答案 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`