Условное регулярное выражение в vim? - PullRequest
4 голосов
/ 25 мая 2010

Возможно ли сделать условное регулярное выражение (как описано в http://www.regular -expressions.info / conditional.html ) в Vim?

Ответы [ 3 ]

9 голосов
/ 25 мая 2010

Vim regex не имеет этой функции, поэтому вам нужно будет использовать немного повторений, чтобы создать такое же поведение:

/\(\%(condition\)\@=then\|\%(condition\)\@!else\)

Обратите внимание, что вы должны использовать условие дважды в версии Vim, и lookahead / lookbehind всегда должно быть противоположным в частях then / else, иначе ваше регулярное выражение будет неверным.

3 голосов
/ 25 мая 2010

Не изначально, однако, если у вас есть + perl в vim, вы можете использовать

:perldo s/search/replace/
2 голосов
/ 25 мая 2010

vim docs заявляет, что регулярные выражения vim не поддерживают условные выражения (в разделе, сравнивающем поддержку шаблонов vim с perl):

Наконец, эти конструкции уникальны для Perl:
- выполнение произвольного кода в регулярном выражении: (? {perl code})
- условные выражения: (? (условие) true-expr | false-expr)

...