MS Word 2016宏正则表达式替换

时间:2019-01-23 17:10:47

标签: regex vba ms-word office365

我正在尝试使用downloadBook : function(bookId) { window.location = basePath + '/book/download/' + bookId } 编写宏,而我的模式是Regex,宏应删除(主题1)(主题2)

输入:

问题号:1(主题1)

问题编号:15(主题2)

结果应为

问题编号:1

问题编号:15

宏代码

\(\bTopic \d+\b\)

2 个答案:

答案 0 :(得分:2)

regexp语法与常规regexp不同。如果您用以下内容替换表达式:

.Text = "\(Topic ([0-9]@>)\)"

您将获得预期的结果。在这种情况下,无需使用VBScript.Regexp。

答案 1 :(得分:1)

“查找”功能仅对正则表达式提供非常有限的支持。您需要使用VBScript.Regexp,如下所示。

尝试以下代码:

Sub RemoveQuestionTopic()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

    strReplacementText = "++__++"
    ActiveDocument.Select
    Set objReg = CreateObject("VBScript.Regexp")
    objReg.Pattern = "\s*\(Topic\s*\d+\)"
    objReg.Global = True
    Selection.Text = objReg.Replace(Selection.Text, strReplacementText)

    With Selection.Find
        .MatchWildcards = True
        .Text = strReplacementText
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Regex Demo