VIM: Regex \ zs \ ze problem - PullRequest
       1

VIM: Regex \ zs \ ze problem

2 голосов
/ 26 апреля 2011

Я пытаюсь удалить весь текст в строках от 2-го символа до последнего шаблона .word\ (удаляя также точку), но перед точкой не может быть \.Если перед точкой стоит \, то удаляйте до предыдущего шаблона .word\.

Я создал это простое регулярное выражение:
^\w\zs.*[^\]\.\ze\w\+\\\s.*$
, но это не работает

Что я сделал не так?

Какой будет код, если я не хочу удалять до последнего .word\, но до 2-го .word\ шаблона?

данные:
nnoremenu <silent> 97.330.10 &Sort.Reverse\ Characters.Reverse\ Characters\ in\ Line\ Hor\ -[A]<Tab>sihT\ si\ ym\ txet\.\<br> nnoremenu <silent> 97.330.11 &Sort.Reverse\ Characters.Reverse\ Characters\ in\ Line\ Hor\ Reverse\ -[A]<Tab>\.txet\ ym\ si\ sihT\

должно быть:
n Reverse\ Characters\ in\ Line\ Hor\ -[A]<Tab>sihT\ si\ ym\ txet\.\<br> n Reverse\ Characters\ in\ Line\ Hor\ Reverse\ -[A]<Tab>\.txet\ ym\ si\ sihT\

1 Ответ

2 голосов
/ 26 апреля 2011

Вы должны использовать:

:%s/^\w\zs.*\\\@<!\.\ze\w\+\\\s

Обратите внимание, что последний \s означает, что вам нужен пробел после последней обратной косой черты.

Помощник \@<! означает: посмотрите за отрицательным утверждением(см. :help /\@<!).

Также обратите внимание, что окончательный .*$ бесполезен.

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