В vim, как я могу найти любую строку, в которой не заканчивается (в данном случае) слово "DROP"?
Vim: найдите любую строку, не заканчивающуюся "WORD"
Ответ 1
/\(DROP\)\@<!$
Это использует отрицательное выражение обратной связи с нулевой шириной. Он находит только окончание строки и только находит окончания строк, которые не имеют DROP
, непосредственно предшествующего им.
Если вы хотите найти всю строку, вы можете использовать:
/^.*\(DROP\)\@<!$
Обратите внимание, что вы должны окружать DROP
с помощью \( .. \)
, потому что утверждения "смотреть вперед" и "смотреть назад" будут соответствовать только одному "атому". Поэтому вы используете parens для группировки своего слова в один атом.
Если вы попробовали /DROP\@<!$
, тогда вы получите результаты поиска, например, полужирная часть:
ABCDEF
тестовый тест DRO
12345DROP
12345 DRO
12345
Там есть учебник для этих утверждений на этой странице, хотя он не использует синтаксис regex VIM:
Вы также можете ввести это в VIM, чтобы получить справку по команде:
:help \@<!
Аналогичные утверждения:
\@=
\@<=
\@!