MS Word - 仅查找 3 位数字

MS Word - 仅查找 3 位数字

需要查找并删除所有只有 3 位数字的数字 - 并忽略 1-2 位和 4+ 位数字(如果有帮助的话,第三位数字后面是中间没有空格的文本,例如“457text”)。非常感谢任何帮助!!!

答案1

您可以在 Word(即非脚本)中使用通配符查找和替换来执行此操作。如果 3 位数字后面始终跟着字母:

在此处输入图片描述

或者如果您想允许任何字符(例如标点符号),您可以通过变体排除第四个字符作为数字:

在此处输入图片描述

在这两个例子中,在“查找内容”部分,圆括号表示部分 - 我们要找到“单词”开头的 3 位数字作为第一部分,并且仅查找下一个字符是字母的数字,即我们要保留的第二部分。

在替换中用 \2 意味着我们仅用“A”部分“替换”我们找到的文本(例如 123A)(其余文本保持不变,因为不是“查找”结果的一部分)。

< 表示单词的开始,即我们希望 3 位数字位于单词的开头,但不想在较长的序列中途选取 3 位数字(例如,通过未在其中找到 345 来忽略 12345)。

方括号表示字符范围,因此 [0-9] 表示从 0 到 9 的任何数字,而 {3} 表示 3 个这些字符的序列。[A-Za-z] 表示任何字母,无论是小写还是大写。[!0-9] 的替代选项可查找除(! 不是)数字 0 到 9 之外的所有内容。

答案2

是的,您可以使用 VBA 脚本执行此操作。要打开 VBA 编辑器,请同时按 ALT + F11。在 VBA 编辑器中输入以下代码

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")    
    On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("[0-9][0-9][0-9]")
    ActiveDocument.Range = _ 
    RegEx.Replace(ActiveDocument.Range, InputBox(""))        

End Sub

相关内容