VBA正则表达式之“或”

论坛 期权论坛 期权     
米宏Office   2019-7-7 23:58   2615   0
我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

前面一节中我们讲过在正则表达式中  a|b  表示匹配a或者是b,同样  [ab]
也表示匹配a或者b,而非匹配ab。


[0-9]表示匹配0-9中任意一个数字,[234]表示匹配2或者是3或者是4,而非匹配234。


也就是说表达或的关系   可以用“|”,也可以用[]。


下面我们看下具体的例子:





要求:左边单元格中的数据以空格区分,希望根据空格拆分到右边的单元格。


代码:

  1. Sub 拆分()
复制代码
  1. Dim regx As Object, rng As Range, mat, m, n%
复制代码
  1. Set regx = CreateObject("vbscript.regexp")
复制代码
  1. With regx
复制代码
  1. .Global = True
复制代码
  1. .Pattern = "[0-9]+"
复制代码
  1. For Each rng In [a1:a6]
复制代码
  1.     Set mat = .Execute(rng)
复制代码
  1.            For Each m In mat
复制代码
  1.                  n = n + 1
复制代码
  1.                  Cells(rng.Row, n + 1) = m
复制代码
  1.            Next
复制代码
  1.            n = 0
复制代码
  1. Next
复制代码
  1. End With
复制代码
  1. End Sub
复制代码


.Pattern = "[0-9]+"表示匹配0-9的之间的任意一个数字,“+”号表示匹配数字一次或者是多次,这样就把每个以空格分割开的数字全匹配出来了。


当然我们也可以写成  .Pattern = "\d+"。


[0-9a-zA-z]表示从0-9任意数字、a到z任意字母,或者A到Z任意字母。

本节的分享就到这里,鹏哥祝大家每天都有进步。

加入米宏Office培训群,每天进步一点点!
从基础操作到VBA,
两杯咖啡的钱,
换取一份如此详细的Excel视频资料,
你还在犹豫?
欲购从速,联系微信号:527240310
非诚勿扰!
每天进步一点,每天提升一点!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:75
帖子:15
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP