如要將一個(gè)Word文檔內(nèi)的兩個(gè)漢字中間的空格替換掉(之所以要特定要求兩個(gè)漢字中間,是為了避免文本中的英文空格替換掉),可以使用查找、替換的通配符。
寫成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 如果使用正則的選擇、查找、替換,則會(huì)有副作用,因?yàn)橐冗x擇,會(huì)將其中的文本格式、圖片都替換掉。 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 當(dāng)然也可以將中文中的半角標(biāo)點(diǎn)替換為全角: ([一-﨩])(,)([一-﨩]) \1,\3 通配符的一般規(guī)則為: 如 (<*>) (<*>)就可以分組匹配兩個(gè)單詞,中間有空格。 另外,\d在正則中表示數(shù)字,而在查找、替換對(duì)話框中是沒有這一寫法的,可以用以下表達(dá)式表示: [0-9]{1,2} 表示匹配一個(gè)或兩個(gè)數(shù)字。 需要注意的是,VBA的正則表達(dá)式與查找對(duì)話框中的通配符的寫法與支持的功能是有所區(qū)別的。 查找、替換對(duì)話框中不使用通配符時(shí),可用^#來表示數(shù)字,其“特殊格式”的彈出菜單為: 如段落標(biāo)記^p,通配符中用^13表示。 查找、替換對(duì)話框中使用通配符時(shí),其“特殊格式”的彈出菜單為: 一些常用的特殊格式的通配符寫法可以從以上彈出菜單中得到幫助。 -End- |
|