使用 Regex 替换多次出现的标签之间的文本

Use Regex to replace text between multiple occurences of tags

我想替换 PowerPoint 文件幻灯片备注中的文本。

如果幻灯片注释中的文本只出现一次标记,我的代码就可以工作。

对于多次出现的标签,它不起作用。

本例中的输入如下所示:

This is a first sentence. 
<code1>This second sentence needs to be deleted.</code1>
Here is a third sentence. This one should be kept.
<code1>This fourth sentence needs to be deleted as well.</code1>

输出如下所示:

This is a first sentence. 

我想要这个:

This is a first sentence. 
Here is a third sentence. This one should be kept.
Sub sync_text()

    input_text = ActivePresentation.Slides(1).NotesPage.Shapes(2).TextFrame.TextRange.Text

    ' Delete code1
    Set regX_delete = CreateObject("vbscript.regexp")
    With regX_delete
    .Global = True
    .Pattern = "<code1>(.+)</code1>"
    End With

    output_text = regX_delete.Replace(input_text, " ")

    ActivePresentation.Slides(1).NotesPage.Shapes(2).TextFrame.TextRange.Text = output_text

End Sub

See here for the answer to this question 作者:约翰·威尔逊。

本质上:

"You have set the pattern to be "GREEDY" - 这意味着它将寻找第一个并继续寻找直到找到最后一个并删除其间的所有内容。在模式中使用 ? 设置为 NON GREEDY"

.Pattern = "<code1>(.+?)</code1>"