Используйте Regex в VBA для замены текста между тегами в PowerPoint (несколько раз) - PullRequest
0 голосов
/ 28 октября 2019

Я хочу заменить текст в примечаниях к слайду файла PowerPoint.

Если текст в примечаниях к слайду выглядит следующим образом (единственный раз удаляемый тег), мой код ниже работает. Тем не менее, f или множественные вхождения тегов это не работает правильно.

Вход в этом случае выглядит так:

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

1 Ответ

0 голосов
/ 01 ноября 2019

См. Здесь (http://www.vbaexpress.com/forum/showthread.php?66149-Use-Regex-in-VBA-to-replace-text-between-tags-in-PowerPoint-(multiple-occurences)&p=395968) ответ на этот вопрос Джона Уилсона.

По существу:

"Вы установили шаблон как" ЖАДЫЙ "- это означаетон будет искать первое и продолжать искать, пока не доберется до последнего, и удалить все промежуточное. Используйте? в шаблоне, чтобы установить NON GREEDY "

.Pattern = "<code1>(.+?)</code1>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...