vba 正则表达式_VBA中正则表达式的基础用法

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

了解了正则表达式的基本概念及用途之后,我们就来学习下具体的用法,先以一个简单的例子来了解下正则到底是怎么用的。

案例:

比如,A1单元格中有一串字符:aabbccddaabbcc,我们要把其中的a找到,然后替换成o。

代码如下:

Sub test()

Dim regx As Object, t$, k, s, n

t = "aabbccddaabbcc"

Set regx = CreateObject("vbscript.regexp")'引用正则表达式

regx.Global = True  '查找范围,True表示全部查找,False表示只查找第一个,默认值是False。

regx.Pattern = "a"  '引号里书写正则表达式,这里要查找a,就直接写个a

Set k = regx.Execute(t)  'Execute方法的结果即k为一个对象,返回匹配成功的结果。

For Each s In k '在k中循环可以得到该k中的每个元素。

MsgBox s

Next

n = regx.Replace(t, "o")  '将匹配成功的结果做替换

MsgBox n

End Sub

上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定,接下来就可以利用正则的方法和属性来实现一些效果了。

Global属性,指查找范围,True为全部查找,False只查找第一个,如果上面案例中其属性改为false,那么只会在该字符串中查找第一个a。

Pattern属性,指的是正则表达式。

下面讲下正则表达式的两个方法:

Execute方法返回匹配成功的结果,是一个对象,通过for-each 可以循环其中的值。

Replace方法将匹配的结果做替换,regx.Replace(t, "o"),t为原字符串,第二个参数为要替换为的结果。

普通字符的替换:

了解了基础的语法之后,我们来看下如何用正则对普通的字符做替换。

49dc31fa951172a30efacf46967fee6d.gif

如上例中,把A列部门中的门字去掉。

思路:

对A列部门循环,循环出来的值用正则表达式匹配“门”字,并把匹配的结果替换成空。

代码如下:

Sub test1()

Dim regx As Object, rng1 As Range

Set regx = CreateObject("vbscript.regexp")

With regx

    .Global = True

    .Pattern = "门"

End With

For Each rng1 In Range("a2:a11")

     rng1(1, 2).Value = regx.Replace(rng1.Value, "")

Next

End Sub

这里注意regexp的两个属性可以用with语法来书写,这样显得简洁明了。当然这节课我们只是对正则表达的基础语法做了个了解,正则表达式真正的魅力在Pattern = "……",引号中的表达式,后面的课程中我们会体会到它的强大之处。

本节的分享就到这里,鹏哥祝大家每天都有进步。

聚米为谷

博学宏才

如果对VBA感兴趣

手机端请扫描

aa86d8425d0c73bebee83243d1d2ec8d.png

电脑端请登录

www.mihong.top

找到《带你走进VBA的世界》

跟着我一步步学习VBA

本节的分享就到这里,鹏哥祝大家每天都有进步。 5eb818f6b0fa52147201d77a4930e08c.gif 您点的每个赞,我都认真当成了喜欢
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值