VBA正则表达式笔记(一)

一 、正则表达式

正则表达式是处理字符串的外部工具,它可以根据设置的字符串对比规则,进行字符串的对比、替换等操作。正则表达式的作用:

  • 完成复杂的字符串判断
  • 在字符串判断时,可以最大限度的避开循环,从而达到提高运行效率的目的。

二 、使用方法

(一)引用外部工具

点击VBE编辑器菜单:工具 – 引用,选取Microsoft VBScript Regular Expressions 5.5

引用后在程序开始进行如下声明:

Sub t1()
    Dim reg As New RegExp
End Sub

(二)直接他建法

Sub t2()
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp")
End Sub

三、常用属性

(一)Global属性

如果属性值为True,则搜索全部字符;如果值为False,则搜索到第一个即停止

Sub t3()
    Dim reg As New regexp
    Dim sr
    sr = "ABCEA"
    With reg
        .Global = True
        .Pattern = "A"
        Debug.Print .Replace(sr, "")
    End With
End Sub

运行结果:

(二)IgnoreCase属性

如果搜索是区分大小写的,为False(缺省值),为True则不分。

(三)Pattern属性

该属性用来定义正则表达式,缺省值为空文本。

(四)Multiline属性

字符串是不是使用了多行,如果是多行,$适用于每一行的最后一个

Sub t4()
    Dim reg As New RegExp
    Dim sr
    sr = "AEA" & Chr(10) & "ABCA"
    With reg
        .Global = True
        .MultiLine = True
        '.Pattern = "A$"
        .Pattern = "^A"
        Debug.Print .Replace(sr, "")
    End With
End Sub

四、常用方法

(一)Execute方法

返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象,返回的信息包括:FirstIndex(开始位置)、Length(长度)、Value(长度)

Sub t5()
    Dim reg As New RegExp
    Dim sr, matc
    sr = "A454BCEA5"
    With reg
        .Global = True
        .Pattern = "A\d+"
        Set matc = .Execute(sr)
    End With
    Stop
End Sub
     
Function ns(rg)
    Dim reg As New RegExp
    Dim sr, ma, s, m, x
    With reg
        .Global = True
        .Pattern = "\d*\.?\d*"
        Set ma = .Execute(rg)
        For Each m In ma
        s = s + Val(m)
        Next m
    End With
    ns = s
    ' Stop
End Function

(二)Text方法

返回一个布尔值,该值指示正则表达式是否与字符串成功匹配。其实就是判断两个字符串是否匹配成功

Sub t7()
    Dim reg As New RegExp
    Dim sr
    sr = "BCR6EA"
    With reg
        .Global = True
        .Pattern = "\d+"
        If .Test(sr) Then MsgBox "字符串中含有数字"
    End With
End Sub
未经允许不得转载:@He » VBA正则表达式笔记(一)

登录

找回密码

注册