Split string on single forward slashes with RegExp

前端 未结 4 560
夕颜
夕颜 2020-12-19 21:46

edit: wow, thanks for so many suggestions, but I wanted to have a regexp solution specifically for future, more complex use.

I need support with splitting text strin

4条回答
  •  一个人的身影
    2020-12-19 22:10

    You can use a RegExp match approach rather than split one. You need to match any character other than / or double // to grab the values you need.

    Here is a "wrapped" (i.e. with alternation) version of the regex:

    (?:[^/]|//)+
    

    Here is a demo

    And here is a more efficient, but less readable:

    [^/]+(?://[^/]*)*
    

    See another demo

    Here is a working VBA code:

    Sub GetMatches(ByRef str As String, ByRef coll As collection)
    
    Dim rExp As Object, rMatch As Object
    
    Set rExp = CreateObject("vbscript.regexp")
    With rExp
        .Global = True
        .pattern = "(?:[^/]|//)+"
    End With
    
    Set rMatch = rExp.Execute(str)
    If rMatch.Count > 0 Then
        For Each r_item In rMatch
            coll.Add r_item.Value
            Debug.Print r_item.Value
        Next r_item
    End If
    Debug.Print ""
    End Sub
    

    Call the sub as follows:

    Dim matches As New collection
    Set matches = New collection
    GetMatches str:="text1/text2", coll:=matches
    

    Here are the results for the 3 strings above:

    1. text1/text2
     text1
     text2
    
    2. text1/text2//text3
     text1
     text2//text3
    
    3. text1//text2
     text1//text2
    

提交回复
热议问题