當前位置:成語大全網 - 新華字典 - 關於Word VBA查找替換(含通配符)的問題

關於Word VBA查找替換(含通配符)的問題

< 標識單詞開始,也就是說這裏要匹配壹個整詞,前面要麽是空格,要麽是標點符號等。

(Subject) 匹配“Subject”這個單詞。用圓括號括起來的是讓它成組,同時本來也可以在替換內容中通過“\1”來指代它。但是我看粘貼出來的代碼裏面替換內容為空,所以我覺得這個圓括號可有可無。

\\ 匹配“\”這個字符。因為“\”本身在查找控制字符裏面具有特殊的控制意義(轉義),所以要匹配它自己就必須在前面再加壹個“\”進行轉義。

* 匹配0到任意多個任意字符

([^11^13]){1} 匹配壹個換段符(^13,在文檔裏面是直接鍵入ENTER得到)或者壹個段內換行符(^11,在文檔裏面鍵入SHIFT+ENTER得到)。方括號的意思是匹配方括號裏面這個集合中的任意字符。“{n}”表示匹配n次,所以“{1}”就是匹配1次了。至於那個圓括號,和上面提到的圓括號的功能相同,同樣我覺得這裏使用是多余的。

整句話的意思,就是要找到形如“Subject\ajdslfjasdlf”文字,且它後面必須是壹個換段或者段內換行。

__________________

補充:

樓主說的沒錯,^11^13在這裏是可以理解成或者的關系。

請問樓主提到的需求中,title後面是不是壹定會有壹個回車?

如果是這樣的話,可以直接在Word查找替換對話框中用這個查找串: <Subject*\\<([!\\]@)[^11^13] ,替換為:\1 。

選中通配符後做全部替換即可。

應該是不需要VBA的吧?樓主可以先試試看,如果不行我再想辦法。

___________________

再補充:

([!\\]@) 的意思就是匹配壹個不包含“\”(這個由“[!\\]”來控制)的字符串,這個字符串由至少壹個字符組成(這個由“@”來控制)。

所以,我的整個查找串的意思就是,查找壹個“Subject”開頭,後面有若幹字符,最後壹個反斜桿的後面有壹個字符串,再往後就是壹個回車。

當然,如果不想用通配符,當然自己寫代碼也是能做到了。但是就得自己去分析整個字符串,會需要考慮很多因素和可能的變化,代碼會寫得很復雜。此外,Word查找替換的通配符,是Word中很重要的壹個功能,掌握它能夠為平時的工作帶來的很大便利。所以還是值得去研究壹下的。

其實我就是看Word自帶的幫助啊……在Word裏面鍵入F1,然後輸入關鍵字“查找替換”,好象返回的第壹條就是我看的那個幫助,裏面有這些控制符號的解釋。

不過Word的查找替換對於模糊查詢的支持總的來說還是比較弱。要想做到更精確、更復雜的搜索條件,還是需要用到正則表達式。這個可以在網上搜索壹下“VBA 正則表達式”。