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

查找:([一-﨩])( )([一-﨩])
替换: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
当然也可以将中文中的半角标点替换为全角:

([一-﨩])(,)([一-﨩])
1,3
通配符的一般规则为:

如() ()就可以分组匹配两个单词,中间有空格。
另外,d在正则中表示数字,而在查找、替换对话框中是没有这一写法的,可以用以下表达式表示:
[0-9]{1,2}
表示匹配一个或两个数字。
需要注意的是,VBA的正则表达式与查找对话框中的通配符的写法与支持的功能是有所区别的。
查找、替换对话框中不使用通配符时,可用^#来表示数字,其“特殊格式”的弹出菜单为:

如段落标记^p,通配符中用^13表示。
查找、替换对话框中使用通配符时,其“特殊格式”的弹出菜单为:

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