Подтвердить что ты не робот

Vim: найдите любую строку, не заканчивающуюся "WORD"

В vim, как я могу найти любую строку, в которой не заканчивается (в данном случае) слово "DROP"?

4b9b3361

Ответ 1

/\(DROP\)\@<!$

Это использует отрицательное выражение обратной связи с нулевой шириной. Он находит только окончание строки и только находит окончания строк, которые не имеют DROP, непосредственно предшествующего им.

Если вы хотите найти всю строку, вы можете использовать:

/^.*\(DROP\)\@<!$

Обратите внимание, что вы должны окружать DROP с помощью \( .. \), потому что утверждения "смотреть вперед" и "смотреть назад" будут соответствовать только одному "атому". Поэтому вы используете parens для группировки своего слова в один атом.

Если вы попробовали /DROP\@<!$, тогда вы получите результаты поиска, например, полужирная часть:

ABCDEF
тестовый тест DRO
12345DROP
12345 DRO
12345


Там есть учебник для этих утверждений на этой странице, хотя он не использует синтаксис regex VIM:

Вы также можете ввести это в VIM, чтобы получить справку по команде:

:help \@<!

Аналогичные утверждения:

\@=
\@<=
\@!