教程
http://club.excelhome.net/thread-1128647-3-1.html
Basic
教程中已经比较详细,此处只是简单说下如何使用,方便后续开发时使用
define
定义并且例化之后才能使用,简单来看下如何定义
Dim regx
Set regx = CreateObject("vbscript.regexp")
regx.Pattern = "#(\d+)"
regx.Global = True
基本使用直接照抄上述代码就行,之后regx.Pattern这里要根据实际需要匹配的字符串进行修改。
提取子字符串
此处应该有很多实现方式,这里只介绍一种最通用的。
tmp = "#1120, this is a code"
regx.Pattern = "#(\d+)"
Set mh = regx.Execute(tmp)
If mh.Count <> 0 Then
Debug.Print (mh(0).SubMatches(0))
End If
这个execute有点像python中findall,会匹配所有符合pattern的字符串,并且按顺序返回,可以用mh(idx)去获取。同时对于pattern中存在括号的情况下,可以用SubMatches来返回括号中匹配的内容。
mh.count用于获得匹配的次数,如果未匹配到则为0。
替换
替换可是一个常用功能,实现方法应该也有很多中。这里也只介绍一种笔者熟悉的,其他方法留待后续提高。
tmp = "#1120, this is a code"
regx.Pattern = "#(\d+)"
strnew = regx.Replace(tmp,"")
Debug.Print (strnew)
replace的作用很简单,就是用于替换pattern匹配到的内容,如果目标字符串中存在能够多次匹配上的子字符串,会全部替换掉。
网友评论