正则表达式字符匹配案例

第1个:人员姓名对比

用b列单元格每行中的人员姓名,与a列每一行内容来进行比对,找出没有出目前a列单元格中人员的姓名,将不匹配的人员姓名标记成红色。

正则表达式字符匹配案例

案例说明

Sub qf()
Dim s As Range, ry, n, xm
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "[一-龢]+" '正则表式所有的汉字
    For Each s In Range("b2:b3") '循环b2:b3单元格内容
        Set ry = .Execute(s) '匹配正则表达式匹配出来
            For Each xm In ry
            '判断a2单元格内容是否包含相应内容,使用通配符
            If Not s.Offset(0, -1) Like "*" & xm & "*" Then
               qd = xm.firstindex + 1 '字符的起始位置
               cd = xm.Length '字符的结束位置
               s.Characters(qd, cd).Font.Color = 255 '改变字符串的颜色
            End If
        Next xm
    Next s
End With
End Sub

第2个:特殊符号匹配

匹配每行内容有双引号标记的内容,将内容提取出来,放到基础单元格后面列.内容填充的列数,由每行匹配的双引号字符数量来确定。

正则表达式字符匹配案例

匹配双符号中的内容

Sub qzf()
Dim s As Range, ry, n, xm
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = """(.+?)""" '注意需要使用多个“
    For Each s In Range("a2:a3") '取一个单元格字符
        Set ry = .Execute(s) '匹配正则表达式匹配出来
        For Each xm In ry
            '当前循环的行最后的单元格后左定边界后添加一列
            Cells(s.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = xm.submatches(0)
        Next xm
    Next s
End With
End Sub

正则表达式详解:

“.+”:取一列所有引号的字符取出来

“.+?”:将一列有引号的字符逐个取出来

“(.+?)”:分组模式取引号中的字符

以上两个案例是正则表达式字符匹配,第2个必定要注意特殊符号,需要前后各3个,源代码复制运行就可以实现功能。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容