美文网首页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