VBA中的正则表达式(二)

VBA中的正则表达式(二)

——IgnoreCase属性

1. IgnoreCase属性

IgnoreCase属性有两个可选值,True或False。

2. IgnoreCase属性案例

Sub regular_study()
    '创建正则表达式对象,并命名为re
    Dim re As Object
    Set re = CreateObject("VBScript.RegExp")
    With re
        .Global = True '匹配字符串中,所有与正则表达式规则相符的地方
        .IgnoreCase = True '匹配时是否区分大小写
        'mytxt为案例的文本
        mytxt = "Welcome to HIMACROSPIDER! Let's start with the himacrospider regular expression tutorial."
        'Pattern表示,查找mytxt文本中是否有“HIMACROSPIDER”
        .Pattern = "HIMACROSPIDER"
        '将查找的结果赋值给myresults,返回的结果是个数组
        Set myresults = .Execute(mytxt)
        For Each myresult In myresults
            Debug.Print myresult
        Next
        Debug.Print "mytxt字符串中(HIMACROSPIDER)的个数为:" & myresults.Count
    End With
End Sub

3. 为True时的输出结果↓

HIMACROSPIDER
himacrospider
mytxt字符串中(HIMACROSPIDER)的个数为:2

全文有两处“HIMACROSPIDER”,一处为大写,另一处为小写,当IgnoreCase为True时,即便表达式为大写,也批到了小写的“himacrospider”。

4. 为False时的输出结果↓

HIMACROSPIDER
mytxt字符串中(HIMACROSPIDER)的个数为:1

全文有两处“HIMACROSPIDER”,一处为大写,另一处为小写,当IgnoreCase为False时,只匹配到了和表达式一样的全为大写的“HIMACROSPIDER”,而没有匹配到小写的“himacrospider”。

5. IgnoreCase属性总结

当IgnoreCase为True时,表示匹配时不区分大小写(大写A和小写a是相同的);当IgnoreCase为False时,表示匹配时区分大小写(大写A和小写a是不同的);默认值是False。

### VBA 中使用正则表达式的编程指导 在 VBA (Visual Basic for Applications) 编程环境中引入正则表达式功能可以极大地增强字符串处理能力。为了实现这一点,通常会利用 `VBScript.RegExp` 对象[^2]。 创建并配置正则对象如下所示: ```vba Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True ' 设置全局匹配模式 .IgnoreCase = True ' 忽略大小写 .Pattern = "your_pattern_here" ' 定义要使用的正则表达式模式 End With ``` 上述代码片段展示了如何实例化一个正则表达式对象以及设置其基本属性。其中 `.Global` 属性决定了是否执行整个输入串中的所有匹配;`.IgnoreCase` 控制着是否区分字母大小写的敏感度;而最核心的部分则是通过 `.Pattern` 来指定具体的正则表达式规则。 对于实际应用而言,假设有一个需求是要找出给定文本里所有的电子邮件地址,则相应的正则表达式可能是这样的形式 `\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b` 。下面是一个完整的例子说明怎样用此方法提取邮件列表: ```vba Sub ExtractEmails() Dim inputText As String Dim matches As Object Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True .IgnoreCase = True .Pattern = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b" If .Test(inputText) Then Set matches = .Execute(inputText) For Each match In matches Debug.Print match.Value Next match Else MsgBox ("No emails found.") End If End With End Sub ``` 这段程序首先定义了一个用于存储待分析文本变量 `inputText` 和用来保存找到的结果集合 `matches` ,接着按照前面介绍的方式初始化了正则引擎参数,并调用了测试函数确认是否存在符合条件的数据项。如果确实存在的话就遍历每一个发现的对象打印出来;反之给出提示信息告知用户未检测到任何邮箱地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值