正则表达式语法 正则表达式菜鸟教程

时间:2023-05-02 03:15/span> 作者:tiger 分类: 新知 浏览:3860 评论:0

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

基础语法:

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

代码如下:

Sub test()

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

t = &34;aabbccddaabbcc&34;

Set regx = CreateObject(&34;vbscript.regexp&34;)&39;引用正则表达式

regx.Global = True &39;查找范围,true为全部查找,false只查找第一个,默认是false。

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

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

For Each s In k &39;通过循环K可以得到该对象中的每个元素。

MsgBox s

Next

n = regx.Replace(t, &34;o&34;) &39;将匹配成功的结果做替换

MsgBox n

End Sub

上面的代码后面都有注释,首先要引用正则表达式,前期绑定也可以,直接创建也可以,然后要对regexp的两个属性做出指定。

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

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

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

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

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

普通字符的替换:

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

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

思路:

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

代码如下:

Sub test1()

Dim regx As Object, rng1 As Range

Set regx = CreateObject(&34;vbscript.regexp&34;)

With regx

.Global = True

.Pattern = &34;门&34;

End With

For Each rng1 In Range(&34;a2:a11&34;)

rng1(1, 2).Value = regx.Replace(rng1.Value, &34;&34;)

Next

End Sub

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

转自:米宏Office

文章评论