当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式在Microsoft word中将word标记为“查找并替换”

伍玮
2023-03-14

我试图突出显示正则表达式发现的一个单词,如果有权利,请用相应的替换词替换它。

代码只有在没有替换的情况下才能正常工作。

也许每次都应该重新安排一下???

Sub Replace()
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")
Dim arr As Variant
Dim arrzam As Variant
Dim i As Long
Dim choice As Integer
Dim Document As Word.Range
Set Document = ActiveDocument.Content

On Error Resume Next
'EGN
'IBAN

arr = VBA.Array("((EGN(:{0,1})){0,1})[0-9]{10}", _
"[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}")
arrzam = VBA.Array("[****]", _
"[IBAN]")
With regExp
    For i = 0 To UBound(arr)
        .Pattern = arr(i)
        .Global = True
        For Each Match In regExp.Execute(Document)            
            ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex +     Match.Length).Duplicate.Select
            choice = MsgBox("Replace " & Chr(34) & Match.Value & Chr(34) & " with " & Chr(34) & arrzam(i) & Chr(34) & "?", _
                vbYesNoCancel + vbDefaultButton1, "Replace")
        If choice = vbYes Then          
          Document = .Replace(Document, arrzam(i))
        ElseIf choice = vbCancel Then          
          Next
        End If
        Next
    Next
End With

End Sub

共有1个答案

彭高畅
2023-03-14

事实上,这有几个问题。

首先,每场比赛中的每场比赛是静态的,在第一个循环的时刻确定。与此同时,您正在更改文档,因此每个连续的比赛都会查看一个旧位置。

其次,一次替换所有引用,因此无需循环遍历它们。似乎一条线,一次替换也可以做同样的事情。

 类似资料:
  • 我正在使用Visual Studio 2013,并尝试使用以下语法查找和替换方法调用: 找到什么: 替换为: 请帮我解决这个问题? 我只需要添加

  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 我正在尝试用python编写一个正则表达式,它可以找到src属性等于特定值的所有img标签..我试着写下面的 下面是我得到的输出

  • 我正在尝试编写一个代码,它可以找到以下格式的所有单词 在“symbols”中的字母数字字符,以:symbols结尾。我的目标是,一旦找到这些字符,就去掉“字符,并将整个字符串包装在标记中。因此在代码运行之后,上面的文本将如下所示, 所以我认为查找此类文本以进行包装的正则表达式如下所示(为Java格式), 通过使用下面的代码,我应该能够迭代所有的匹配。 所以我可能做错了。 现在我已经用一个强标签包装

  • 我有一份从MS Word复制/粘贴的文件。所有的引文都被复制为,这基本上在我的LaTeX文档中造成了混乱,因此它们必须是。 有没有可能创建一个正则表达式来查找所有这些,其中可以是任何东西(包括符号、数字等)。),并用正确的引号替换它的正则表达式?我使用Sublime文本,它能够直接在编辑器中使用RegEX。

  • 我正在尝试编写一个代码,它可以找到以下格式的所有单词 在“symbols”中的字母数字字符,以:symbols结尾。我的目标是,一旦找到这些字符,就去掉“字符,并将整个字符串包装在标记中。因此在代码运行之后,上面的文本将如下所示, 所以我认为查找此类文本以进行包装的正则表达式如下所示(为Java格式), 通过使用下面的代码,我应该能够迭代所有的匹配。 所以我可能做错了。 现在我已经用一个强标签包装