通过RegEx获取模式的不匹配部分

Vit*_*ata 2 regex excel vba excel-vba

在本主题中,我们的想法是将数据"删除",然后x通过RegEx进行划分.- > 如何使用excel正则表达式从字符串中提取广告尺寸

因此来自:

uni3uios3_300x250_ASDF.html
Run Code Online (Sandbox Code Playgroud)

我想通过RegEx实现:

300x250
Run Code Online (Sandbox Code Playgroud)

我已经成功地完成了相反的工作,我正在努力争取需要做的事情.这就是我现在所拥有的:

Public Function regExSampler(s As String) As String

    Dim regEx           As Object
    Dim inputMatches    As Object
    Dim regExString     As String

    Set regEx = CreateObject("VBScript.RegExp")    
    With regEx
        .Pattern = "(([0-9]+)x([0-9]+))"
        .IgnoreCase = True
        .Global = True    
        Set inputMatches = .Execute(s)    
        If regEx.test(s) Then
            regExSampler = .Replace(s, vbNullString)
        Else
            regExSampler = s
        End If    
    End With

End Function

Public Sub TestMe()    
    Debug.Print regExSampler("uni3uios3_300x250_ASDF.html")
    Debug.Print regExSampler("uni3uios3_34300x25_ASDF.html")
    Debug.Print regExSampler("uni3uios3_8x4_ASDF.html")    
End Sub
Run Code Online (Sandbox Code Playgroud)

如果你跑TestMe,你会得到:

uni3uios3__ASDF.html 
uni3uios3__ASDF.html
uni3uios3__ASDF.html
Run Code Online (Sandbox Code Playgroud)

而这正是我想通过RegEx剥离的东西.

Sco*_*man 8

IF块更改为

    If regEx.test(s) Then
        regExSampler = InputMatches(0)
    Else
        regExSampler = s
    End If
Run Code Online (Sandbox Code Playgroud)

你的结果将会回归

300x250
34300x25
8x4
Run Code Online (Sandbox Code Playgroud)

这是因为InputMatches保存了RegEx执行的结果,它保存了您匹配的模式.