2015-12-03 4 views
2

Есть ли эквивалент (*SKIP) в двигателе регулярных выражений Vim? (без использования :perldo и т. д.)Pcre (* SKIP) в Vim regex?

+0

Пожалуйста, добавьте более подробную информацию о своей проблеме, возможно, вы можете обойтись без (* SKIP) глагола. Тем не менее, вы можете использовать PCRE в Vim (http://stackoverflow.com/a/33081758/3832970). –

+0

Как уже говорилось, я не хочу использовать какие-либо другие двигатели регулярных выражений. Я просто хочу знать, есть ли (* SKIP) эквивалент в vim. (Речь идет не о конкретной проблеме, но давайте возьмем, к примеру, «знаменитый» шаблон регулярного выражения «не это» (* SKIP) (?!) | но это « – Vimminator

+0

попробуйте прочитать': help pattern' – mMontu

ответ

3

Нет, согласно how do skip or f work on regex, он применяется только в PCRE.

Ответ объясняет, что это может быть реализовано другими способами, тем более, что Vim имеет переменную длину lookbehind. Так /not this(*SKIP)(?!)|but this/ может быть сформулирована в Vim, как это:

/^\%(.*not this\)\@!.*\zsbut this/ 

У меня нет общего рецепта для перевода (*SKIP) в регулярных выражений диалекта Vim, но это должно быть возможным, чтобы выразить любое такое выражение в Vim тоже (но в результате регулярное выражение может быть не таким аккуратным и иметь повторяющуюся информацию).

+0

'(* SKIP)' is [реализовано в perl тоже] (http://perldoc.perl.org/perlre.html# (* SKIP) - (* SKIP% 3aNAME)) – Mariano

+0

Я также думаю, что «Нет» - правильный ответ. Я не принял ваш ответ еще, потому что ваш пример '/^\%(.*not this \) \ @!. * \ zsbut этот /', похоже, не работает. Не могли бы вы проверить? – Vimminator

+0

@Vimminator: шаблон соответствует 'но это 'в строках, которые не содержат' not this' (т. е. не раньше и не после) .Что еще должно соответствовать? –