4

Я пытаюсь закомментировать все объявления типов переменных в моем сценарии, но я сталкивался с этой проблемой несколько раз. Я хотел бы сопоставить строку, затем имя переменной, затем строку и заменить точный текст, но с одинарной кавычкой перед второй строкой.

Например:

Dim variableName As Boolean
Dim variableName2 As String

должен стать:

Dim variableName 'As Boolean
Dim variableName2 'As String

Теперь проблема в том, что у меня также есть строки "As" в других местах кода, которые не должны быть заменены, поэтому простой поиск / замена не сработает.

Я использую NotePad++ и имею следующее регулярное выражение, которое правильно соответствует моим объявлениям:

Dim.*As

Но я не могу понять, что поставить вместо .* В поле замены. Dim.*'As Очевидно, что подстановочная строка заменяется литералом .* , Что не годится.

Есть идеи?

2 ответа2

7

Вы можете использовать RegEx "группы захвата", чтобы указать разделы, которые вы хотите захватить и сохранить, и заменить остальные.

В Notepad++ группы захвата представлены скобками (( и )), и вы можете поместить их содержимое в "Заменить", используя обозначения, такие как \1 , \2 и т.д. Для каждой добавленной вами группы захвата (в порядке появления),

Итак, измените ваш поиск RegEx на (Dim.*)(As) , который будет находить вещи, как это было изначально для вас, но создает две группы захвата. Один до того, где вы хотите вставить ' , и один после.

Для этого найдем Dim variableName As Boolean как и раньше, и две группы захвата будут содержать Dim variableName и As Boolean .

Для поля «Заменить» в Notepad++ используйте \1'\2 ; это заменит сопоставленный текст первой группой захвата, затем символом ' , за которым следует вторая группа захвата.

Выполните замену, и Dim variableName As Boolean становится Dim variableName 'As Boolean (и т.д.).

1

Это может быть сделано с оглядкой назад и вперед. Например: Найти:

(?<=Dim)(.*?)(?=As)

Заменить:

\1'

Это должно делать то, что вы пытаетесь сделать. '\1' в замене соответствует тексту между 'Dim' и 'As', что позволяет вам добавить комментарий.

редактировать

Как примечание после того, как я проверил, это работает только с Заменить все

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .