(g) замена энергии regex

Это всегда довольно изворотливо, особенно при выделении ресурсов в конструкторе; в зависимости от Вашего языка не назовут деструктор, таким образом, Вам будет нужно к вручную очистке. Это зависит от как, когда время жизни объекта начинается на Вашем языке.

единственное время я действительно сделал его, когда была проблема безопасности где-нибудь, которая означает, что объект не должен, а не не может, быть созданным.

5
задан Milde 4 December 2009 в 14:21
поделиться

4 ответа

В vim вы должны добавить (, ) и | с обратной косой чертой, поэтому попробуйте

:%s/print\s*\(.\{-}\);/printnlog(\1);/g
8
ответ дан 13 December 2019 в 05:36
поделиться

Хотя вы можете создавать группы захвата (как вы это делаете), я думаю, что самый простой подход - выполнить эту работу в несколько этапов с очень простыми регулярными выражениями и словами-флажками. Например:

:%s/print "testcode.*/printnlog(XXX&XXX);/
:%s/XXXprint //
:%s/;XXX//

В этих примерах я использую «XXX» для обозначения границ, которые впоследствии следует обрезать (вы можете использовать все, что не отображается в вашем коде). Амперсанд (&) берет всю строку соответствия и вставляет ее в заменяющую строку.

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

1144092]

0
ответ дан 13 December 2019 в 05:36
поделиться

Достаточно ли этого для ваших нужд?

%s/print\s*\("[^"]*"\)/printnlog(\1)
0
ответ дан 13 December 2019 в 05:36
поделиться

MBO's answer works great, but sometimes I find it easier to use the "very magic" option \v so I don't have to escape everything; makes the regex a little more readable.

See also:

4
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: