分享

正则表达式之字符组

 L罗乐 2018-04-25


先来看一个案例:



如上图:序号和后面的标题写在了一起,有的序号是一位数字,有的是两位数字,有的是三位数字,还有五位数字的。另外,序号和标题之间有的是顿号连接、有的是冒号连接,有的是空格,还有的没有任何分割符号直接连接在一起的。现在需要把后面的标题提取出来。


根据我们前面几节学习的知识,我们只要利用一个表达式把标题前面的数字和分割符号匹配出来,然后替换为空白就可以了。


元字符“\d”表示数字,数字位数不确定,我们用量词“ ”来匹配多位数字,这样数字部分就可以匹配出来了。


数字与标题之间的空格、冒号、顿号怎么表示呢?


我们可以用[ :、]来表示,类似[a-z]表示a到z的字母,[123]表示1或者2或者3,这样的表达方式就叫字符组,由一些字符组成一个集合,表示匹配该集合中任意一个字符。


因为有的序号和标题之间直接相连,所以我们用“\d [ :、]?”,量词?表示出现0次或1次,出现0次就代表啥都没有,也就是序号和标题直接相连的情况。


上面的案例代码如下:

Sub 拆分()

Dim regx As Object, rng As Range, n

Set regx = CreateObject('vbscript.regexp')

With regx

      .Global = True

      .Pattern = '\d [、: ]?'

        For Each rng In [a1:a12]

        n = n 1

        Cells(n, 2) = .Replace(rng, '')

        Next

End With

End Sub


字符组在前几节的内容中也出现过,在这节我们提了下它的概念,让大家知道到底是个啥玩意。


今天的分享就到这里了!


想更深入的学习视频教程,请进入公众号后台菜单中了解详情!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多