vba 正则表达式

群友分享的,内容解释非常清楚

Sub RegTest()



    Dim oRegExp As Object '定义正则表达式对象
    Dim oMatches As Object '定义匹配字符串集合对象
    Dim str As String '定义要执行正则查找的文本变量
    str = "这是v这是b的范例程序a代码"
    Set oRegExp = CreateObject("vbscript.regexp")
    With oRegExp
        '设是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项,默认的设置为True
        .Global = True
        '设置是否区分大小写,True表示不区分大小写, False表示区分大小写,默认的设置为True
        .IgnoreCase = True
        .Pattern = "([\u4e00-\u9fa5])([\u4e00-\u9fa5]*)" '设置要匹配的正则表达式
        '判断是否可以找到匹配的字符,若可以则返回True
        'MsgBox .Test(str)
        '对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
        Set oMatches = .Execute(str)
        'MsgBox (oMatches.Count) '匹配到的对象的数目
      ' MsgBox (oMatches.Item(1)) '匹配到的对象集合下标为1的字符串
        '匹配到的对象集合下标为1的字符串在整个字符串中的位置,值从0开始
        'MsgBox (oMatches.Item(1).FirstIndex)
        '匹配到的对象集合下标为1的字符串的长度
        'MsgBox (oMatches.Item(2).Length)
       ' Dim subM As Object '定义分组功能的实现
       ' Set subM = oMatches.Item(2).SubMatches '匹配的第二个字符串使用分组功能
       ' MsgBox (subM.Count) ' 分组数
       ' MsgBox (subM.Item(1)) '分组第二组
'        Dim m As Object
'        For Each m In oMatches '遍历集合
'        Range("a1") = oMatches.Count
'        k = k + 1
'        Range("b" & k) = m 'oMatches.Item()
'           MsgBox (m.Value) '输出集合内容
'        Next
        '把字符串中用正则找到的所有匹配字符替换为其它字符
        MsgBox oMatches
        'MsgBox .Replace(str, "")
    End With
    Set oRegExp = Nothing
    Set oMatches = Nothing
    
End Sub

猜你喜欢

转载自blog.csdn.net/qq_29663489/article/details/80046178
今日推荐