分享

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

 王咸美 2024-04-30 发布于江苏

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

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

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

替换:\1\3

写成VBA代码:

Sub 替换()With Selection.Find .Text = '([一-﨩])( )([一-﨩])' .Replacement.Text = '\1\3' .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

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

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

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

\1,\3

通配符的一般规则为:

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

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

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

[0-9]{1,2}

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

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

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

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

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

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

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

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

-End-

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多