Как я могу найти все строки, не содержащие '/' в vim? - PullRequest
0 голосов
/ 18 февраля 2019

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

Моя попытка была [^/]*/[^/]*$.Однако это не похоже на работу.Я попытался сопоставить только части этого шаблона и начал с простого сопоставления строк любой длины, не содержащих /, которые, как я думаю, должны быть просто [^/]*, но это не работает.

Я довольно хорошо знаком с регулярным выражением, но не настолько хорошо знаком с его использованием в vim, поэтому, во-первых, я неправильно ввожу свое регулярное выражение для использования vim?и во-вторых, если мои данные для vim верны, то что не так с моим регулярным выражением?

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете искать все строки, соответствующие вашему шаблону, используя

:g/^[^\/]*\/[^\/]*$

Обратите внимание, что g будет соответствовать всем вхождениям, обратная косая черта здесь должна быть экранирована, а шаблон соответствует

  • ^ - начало строки
  • [^\/]* - 0+ символов, отличных от /
  • \/ - a /
  • [^\/]*- 0+ символов, отличных от /
  • $ - конец строки.

Обратите внимание, что [^\/]* (выражение в скобках с отрицанием) не будет соответствовать разрыву строкипоследовательность в Vim, в отличие от текстовых редакторов, таких как Sublime Text 3 или Notepad ++, поэтому она будет соответствовать именно тому, что вам нужно.

Обратите внимание, что вы можете избежать экранирования обратной косой черты, если выберете другой delimiter .См. Ссылку Vim regex :

Часто вам нужно выполнять S & R в тексте, который содержит пути к файлам UNIX - текстовые строки с косой чертой ("/") внутри.Поскольку команда S & R использует косые черты для разделения шаблона / замены, вы должны избегать каждой косой черты в вашем образце, то есть использовать "\/" для каждого "/" в вашем образце ... Чтобы избежать этого так называемого "обратного слешита", вы можете использовать различные разделителив S & R.

Итак, вы также можете использовать :g~^[^/]*/[^/]*$~ или :g#^[^/]*/[^/]*$#, как Амадан предлагает .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...