ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 正则表达式中的Replace和Execute方法有何区别?

正则表达式中的Replace和Execute方法有何区别?

作者:绿色风 分类: 时间:2022-08-17 浏览:116
楼主
wise
Q:正则表达式中的Replace和Execute方法有何区别?
A:Replace和Execute都可以用来查找替换字符串,但用Execute方法比较少见。本例中用到的 \d+ 表达式,用于匹配一个或多个0-9的数字,包括“.”之类的字符。

Execute方法:以连续数字为分割符,抽取各段文本字符串组成集合。
再通过循环重新连接集合中的所有字符串,得到需要的结果。

  1. Sub Execute()
  2. Dim RegEx As Object, RegMatchCollection As Object, RegMatch As Object
  3. Dim Rng As Range, C As Range, OutPutStr As String
  4.     Set RegEx = CreateObject("vbscript.regexp")
  5.     With RegEx
  6.         .Global = True
  7.         .Pattern = "\d+"
  8.     End With
  9.     Set Rng = ActiveSheet.Range("A2:A8")
  10.     For Each C In Rng
  11.         OutPutStr = ""
  12.         Set RegMatchCollection = RegEx.Execute(C.Value)
  13.         For Each RegMatch In RegMatchCollection
  14.             OutPutStr = OutPutStr & RegMatch
  15.         Next
  16.         C.Offset(0, 1) = OutPutStr
  17.     Next
  18.     Set RegMatchCollection = Nothing
  19.     Set RegEx = Nothing
  20.     Set Rng = Nothing
  21. End Sub
Replace方法:直接模糊查找替换数字为空。

  1. Sub Replace()
  2. Dim RegEx  As Object
  3. Dim Rng As Range, C As Range
  4.     Set RegEx = CreateObject("vbscript.regexp")
  5.     With RegEx
  6.         .Global = True
  7.         .Pattern = "[^\d]+"
  8.     End With
  9.     Set Rng = ActiveSheet.Range("A2:A8")
  10.     For Each C In Rng
  11.         C.Offset(0, 1) = RegEx.Replace(C.Value, "")
  12.     Next
  13.     Set Rng = Nothing
  14.     Set RegEx = Nothing
  15. End Sub

正则表达式-去数字的两种方法.rar
2楼
tongliaozyr
越学习,越发现自已的无知!
3楼
omnw
还没接触过正则表达式方面的知识.
4楼
xyf2210
正在学习正则,谢谢了
5楼
bluexuemei
学习`

免责声明

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

评论列表
sitemap