在Excel单元格中调用正则表达式

| 我想使用正则表达式匹配从单元格中提取字符串。 我找不到能做到这一点的excel函数,我也不是VBA专家。 我使用Excel 2007。     
已邀请:
在Excel VBA代码编辑器中,选择“工具/参考”。在选择器中,检查最新版本的Microsoft VBScript Regular Expresions。 这是一个简单的用户定义函数,可帮助您入门。如果将其指向带有\“ foobar \”或\“ fooooobar \”的单元格,则将返回\“ foo \”。
Function RegExtract(contents As String)
    Dim regx As RegExp
    Set regx = New RegExp

    With regx
    .Pattern = \"f[o]+\"
        With .Execute(contents)
            If .Count Then RegExtract = .Item(0).Value
        End With
    End With
End Function
    
这是一个函数,可让您传递单元格,然后传递任何正则表达式模式。在要函数返回的模式部分周围使用()。
Function RegexExtract(ByVal text As String, _
                      ByVal extract_what As String) As String

Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject(\"vbscript.regexp\")

RE.Pattern = extract_what
RE.Global = True
Set allMatches = RE.Execute(text)
RegexExtract = allMatches.Item(0).submatches.Item(0)

End Function
    
在Excel的VBA系统中有一个可用的库,称为Microsoft VBScript正则表达式。一旦从内部VBA \'IDE \'中包含了库,就可以创建一个简单的宏,该宏接受要解析的任何值并将结果返回给调用方(可以是从单元格进行的函数调用) )。     
@AndrewCowenhoven有一个很好的答案。添加正则表达式库很简单。为了稍微扩展这个答案,我将添加我所学到的在比赛中获得物品的知识。 例如,我在一个单元格中有一个这样的字符串。 doubleclick.net/activityi;u=5f2256de37ab4992927b3a0a0a34f983;u13=;u14=27.34;u16=AUD;u9=;u10=;u11=;u12=;u5=;u6=;u7=;u8=;u1=Car;u2 = SEA; u3 = SEA; u4 = 20130923%20%7C%2020130926; ord = 5360319407191.128? 我只需要几个部分来验证发送给google的doubleclick标记是正确的。使用上面显示的正则表达式,我有这样的事情。
Function CheckU3(contents As String)
Dim regx As RegExp
Set regx = New RegExp
Dim matches, s

With regx
.Pattern = \"u3=(.*?);\"
.Global = False

If regx.Test(contents) Then
    Set matches = regx.Execute(contents)
        For Each Var In matches.Item(0).SubMatches
            s = Var
        Next
End If

CheckU3 = s

End With
End Function
我知道这可以简化很多,但是重点是我正在使用parans拉动子比赛以明确获得我需要的东西。     

要回复问题请先登录注册