美文网首页vba编程教程
VBA - 正则表达式小记

VBA - 正则表达式小记

作者: 几事当欢 | 来源:发表于2020-03-17 14:22 被阅读0次

教程

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匹配到的内容,如果目标字符串中存在能够多次匹配上的子字符串,会全部替换掉。

相关文章

网友评论

    本文标题:VBA - 正则表达式小记

    本文链接:https://www.haomeiwen.com/subject/jvcwshtx.html