ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA正则表达式查找字母与数字相间隔的字符长度是6的字符?

如何用VBA正则表达式查找字母与数字相间隔的字符长度是6的字符?

作者:绿色风 分类: 时间:2022-08-17 浏览:144
楼主
wise
Q:如何用VBA正则表达式查找字母与数字相间隔的字符长度是6的字符?
如a1b1c1这个就是字母与数字相间,而a11a2a这个则不是
A:ALT+F11→插入模块→在模块中输入以下代码:
  1. Sub 字母与数字相间隔的字符()
  2.   Dim str As String
  3.   Dim reg As Object
  4.   Dim i As Long
  5.   Dim matcher As Object
  6.   str = "12124 A1B1C1 40123 a1d2c4b8"
  7.    '后期绑定调用正则表达式
  8.   Set reg = CreateObject("VBscript.regexp")
  9.   With reg
  10.     .Global = True
  11.     .ignorecase = True
  12.     '关键是对于\w 及\d的理解
  13.     .Pattern = "\w\d\w\d\w\d"
  14.   End With
  15.   Set matcher = reg.Execute(str)
  16.   For i = 0 To matcher.Count - 1
  17.     Debug.Print matcher.Item(i)
  18.   Next i
  19. End Sub

注意:\d表示任何一个数字字符,等价于[0-9];而\D表示任何一个非数字字符,等价于[^0-9];\w表示为任何一个字母数字字符,大小写均可,或下划线字符,等价于[a-zA-Z0-9_];\W则与\w相反
2楼
wise
  1. .Pattern = "(\w\d){3}"
替换
  1. .Pattern = "\w\d\w\d\w\d"
这个更好一点
3楼
DJ_Soo
  1. .Pattern = "(\w\d){3}"
原来括号后面加数字固定出现次数是要加{}的,多谢小7
4楼
DJ_Soo
  1. Sub test()
  2.     Dim RegExp As Object
  3.     Const Str As String = "as123asd131232asd123123zsdasf11dsad3sz111111AASD"
  4.     Set RegExp = CreateObject("vbScript.regexp")
  5.     Dim aaa
  6.     With RegExp
  7.         .Global = True
  8.         .Pattern = "(\d{1}.{6}[a-z]{1}|[a-z]{1}.{6}\d{1})"
  9.         aaa = .Replace(Str, "($1)")
  10.         MsgBox aaa
  11.     End With
  12. End Sub
数字和字母之间相隔六位的我的代码
5楼
bluexuemei
为什么d2c4b8不符合呢?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap