Visual Basic RegEx帮助 - 提取和替换路径

时间:2011-12-23 05:46:57

标签: regex vb.net vba

我有文件路径,例如:

' Any number of folders before and after the Project name
C:\a\b\c\d\Project1\e\f\g\somefile.someextension'

我将如何:

  1. 仅提取项目名称前的路径?

    C:\a\b\c\d\

  2. 在项目名称后提取路径?

    \e\f\g\somefile.someextension

  3. 注意:当然是给出了文件名。

    Split会更好还是更复杂

1 个答案:

答案 0 :(得分:2)

使用InStr

更新了通配符测试
Sub ParsMe()
    Dim strTest As String
    Dim strnown As String
    Dim arrStr() As String
    Dim strOut As String
    Dim lngFirst As Long
    Dim lngStart As Long
    Dim lngEnd As Long
    strTest = "C:\a\b\c\d\Project1\e\f\g\somefile.someextension"
    strKnown = "Project"
    lngFirst = InStr(strTest, strKnown)
    If lngFirst > 0 Then
        lngEnd = InStr(lngFirst, strTest, "\")
        lngStart = InStrRev(strTest, "\", lngFirst)
    MsgBox "Start path:= " & Left$(strTest, lngStart) & vbNewLine & "End path:=" & Right$(strTest, Len(strTest) - lngEnd + 1), vbInformation, "Found:= " & Mid$(strTest, lngStart + 1, lngEnd - lngStart - 1)
    Else
        MsgBox strKnown & " not found in " & strTest
    End If
End Sub

对于简单拆分使用Split,正则表达式不会在此处添加任何其他值。像tis这样的东西

Option Base 0
Sub ParseMe()
    Dim strTest As String
    Dim strKnown As String
    Dim arrStr() As String
    strTest = "C:\a\b\c\d\Project1\e\f\g\somefile.someextension"
    strKnown = "Project1"
    arrStr = Split(strTest, strKnown)
    If UBound(arrStr) = 0 Then
        MsgBox strKnown & " not found", vbCritical
    Else
        MsgBox "path before is " & arrStr(0) & vbNewLine & "path after is " & arrStr(1)
    End If
End Sub