我試圖在包含文本和數字的 Microsoft Word 檔案中查找特定數字,但我不知道該怎么做。我想為此目的使用 VBA。
例如檔案中的文字如下;
(1) 52.203-19, 這是這里的一段文字 (2) 52.204-23, 快速的棕色狐貍跳過了懶惰的狗 52 次。(3) 52.204-25,我嘗試了52.204次搜索解決方案。(4) 52.2,雖然找不到任何運氣 (5) 52.203,這讓我對 mac 2.36 感到震驚
現在我希望找到確切的數字“ 52.2 ”作為一個整體,我不想找到任何其他實體,其中52.2是另一個數字的一??部分,例如52.2 03 或52.2 04。
另外,當我想找到52.203 時,我想排除所有像 52.203-xx 這樣的實體,其中 xx 可以是任何兩位數。
簡而言之,我只想從整體上而不是在數字之間找到確切的數字,就像 Excel 的 EXACT 函式一樣。
我該怎么辦?我應該使用 RegEx 還是應該通過 VBA 使用帶有通配符的 Word 的高級查找功能?這是我到目前為止所做的沒有任何運氣的事情,
Selection.Find.ClearFormatting
With Selection.Find
.Text = "52.2"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
但這會找到我不想要的所有實體。
uj5u.com熱心網友回復:
正則運算式似乎是解決這個問題的方法。
首先,在 VBA 編輯器中轉到Tools>References并確保Microsoft VBScript Regular Expressions 5.5庫旁邊有一個檢查。
以下代碼在您的示例文本中對我有用,僅洗掉了“(4)”之后的“52.2”,而不會影響任何周圍的字符:
Sub removeNumber()
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")
With regExp
.Pattern = "\b52.2\b"
.Global = True
Selection.Text = .Replace(Selection.Text, "")
End With
End Sub
\b 表示字邊界,因此不會匹配“52.5”之前或之后的任何數字。
uj5u.com熱心網友回復:
不需要正則運算式。您可以將 Find 與通配符一起使用。有關說明,請參閱
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/398225.html
