word 正则表达式 替换_Word VBA|通配符查找、替换、VBA及正则表达式

如要将一个Word文档内的两个汉字中间的空格替换掉(之所以要特定要求两个汉字中间,是为了避免文本中的英文空格替换掉),可以使用查找、替换的通配符。

91e3b622dc2f5c6c0491f7a0f1af4516.png

查找:([一-﨩])( )([一-﨩])

替换:13

写成VBA代码:

Sub 替换()With Selection.Find .Text = "([一-﨩])( )([一-﨩])" .Replacement.Text = "13" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAllEnd Sub

如果使用正则的选择、查找、替换,则会有副作用,因为要先选择,会将其中的文本格式、图片都替换掉。

Sub replacetxt222() Dim regex As Object Dim regMatch As Object Set regex = CreateObject("VBScript.RegExp") Dim str As String str = Selection.Text With regex .Pattern = "([一-﨩])( )([一-﨩])" .MultiLine = True .Global = True .IgnoreCase = True str = .Replace(str, "$1$3") Debug.Print (str) End With Selection.Text = strEnd Sub

当然也可以将中文中的半角标点替换为全角:

002e652c9e315c31c5650578d223a900.png

([一-﨩])(,)([一-﨩])

1,3

通配符的一般规则为:

da686b3183ec41b58f8945b899d17b1e.png

如() ()就可以分组匹配两个单词,中间有空格。

另外,d在正则中表示数字,而在查找、替换对话框中是没有这一写法的,可以用以下表达式表示:

[0-9]{1,2}

表示匹配一个或两个数字。

需要注意的是,VBA的正则表达式与查找对话框中的通配符的写法与支持的功能是有所区别的。

查找、替换对话框中不使用通配符时,可用^#来表示数字,其“特殊格式”的弹出菜单为:

236fb75cd67d8be579976a9b0ce83e32.png

如段落标记^p,通配符中用^13表示。

查找、替换对话框中使用通配符时,其“特殊格式”的弹出菜单为:

ecdd3fb336b9d0df06d17dc06a091b55.png

一些常用的特殊格式的通配符写法可以从以上弹出菜单中得到帮助。

-End-

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值