(十五)VBA常用基础知识:正则表达式的使用

  1. vba正则表达式的说明
项目 说明
Pattern 在这里写正则表达式,例:[\d]{2,4}
IgnoreCase 大小写区分,默认false:区分;true:不区分
Global true:全体检索;false:最小匹配
Test 类似perl正则前的m,匹配项目
Replace 类似perl正则前的s,替换项目
Execute 类似java的matcher,然后能取出里边的group1,group2,group3;或者perl里匹配的各个括号的值

※正则表达式怎么写,这里不做说明,我是做perl的时候看了那本骆驼书然后顿悟的,以前特别怕写正则,现在还挺喜欢写的,特别是用正则解决了问题后

2.Test的用法

vbnet 复制代码
Sub test()
    Dim RE  As String
    Dim patt As String
    Set RE = CreateObject("VBScript.RegExp")
    pattern = "[0-9]{2,4}"
    With RE
        .pattern = patt
        .IgnoreCase = True
        .Global = True
        If .test("word1234aa") Then
            Debug.Print "11111"
        Else
            Debug.Print "22222"
        End If
        If .test("word4aa") Then
            Debug.Print "33333"
        Else
            Debug.Print "44444"
        End If
    End With
    Set RE = Nothing
End Sub

执行结果:

原因:没有引正则的包

很遗憾,macos vba无法使用正则,因为没有正则的引用

但是上边我写的正则匹配应该是没问题的

3.Replace的用法

vbnet 复制代码
Sub test()
    Dim RE As String
    Set RE = CreateObject("VBScript.RegExp")
    With RE
        .pattern = "[0-9]{2,4}"
        .IgnoreCase = False
        .Global = True
    End With
    Dim str As String, ret As String
    str = "I love you 123"
    ret = RE.Replace(str, "zy")
    Debug.Print ret
    Set RE = Nothing
    '输出结果:I love you zy
End Sub

4.Execute的用法

vbnet 复制代码
Sub test()
    Dim RE, patt As String, pmatch
    Set RE = CreateObject("VBScript.RegExp")
    patt = "I love ([\d]+) and ([\d]+)"
    With RE
        .pattern = patt
        .IgnoreCase = True
        .Global = True
         Set pmatch = .Execute("I love 123 and 456")
         If pmatch.Count > 0 Then
            Debug.Print pmatch(0) & "======" & pmatch(1)
         End If
    End With
    Set pmatch = Nothing
    Set RE = Nothing
End Sub
相关推荐
傻啦嘿哟16 分钟前
Python 操作 Excel 条件格式指南
开发语言·python·excel
逆境不可逃17 分钟前
LeetCode 热题 100 之 33. 搜索旋转排序数组 153. 寻找旋转排序数组中的最小值 4. 寻找两个正序数组的中位数
java·开发语言·数据结构·算法·leetcode·职场和发展
星空下的月光影子30 分钟前
易语言开发从入门到精通:进阶篇·数据处理与分析自动化·高频刚需手工转自动场景全覆盖
开发语言
林夕sama32 分钟前
多线程基础(四)
java·开发语言
Yang-Never36 分钟前
ADB ->adb shell perfetto 抓取 trace 指令
android·开发语言·adb·android studio
小鸡吃米…40 分钟前
Python 网络爬虫 —— 环境设置
开发语言·爬虫·python
add45a1 小时前
C++中的观察者模式
开发语言·c++·算法
该怎么办呢1 小时前
Source/Core/Event.js
开发语言·javascript·ecmascript·cesium
似水明俊德1 小时前
04-C#.Net-委托和事件-面试题
java·开发语言·面试·c#·.net