Обнаружение слов или любого символа после некоторого совпадения, Regex Pattern (Vim) - PullRequest
3 голосов
/ 26 сентября 2010

У меня есть текстовый файл с таким шаблоном:

1 textA == this is textA ==
1.1 textB === this is textB ===
2 textC == this is textC ==
2.1 textD === this is textD ===
2.1.1 textE ==== this is textE ====

Какой правильный шаблон регулярного выражения для форматирования текста выше:

== this is textA ==
=== this is textB ===
== this is textC ==
=== this is textD ===

Я уже пытаюсь выполнить это в vim:

^\w* -> this pattern just changes only textA and textB

Мне нужно обнаружить "."и любой символ или слова, пока не встретите знак "=".Любые символы за знаком "=" будут удалены.Заранее спасибо за любые ответы и указатели.

Решение

^.\{-}\ze=

Объяснение:

^.   -> started with any single character
\{-} -> matches 0 or more of the preceding atom, as few as possible
\ze= -> Matches at any position, and sets the end of the match there: The previous char  is the last char of the whole match

В человеческих словах:"Найти и заменить текст, начинающийся с любого отдельного символа, за которым следует что-либо и заканчивающийся знаком" = ".

1 Ответ

4 голосов
/ 26 сентября 2010
:%s/^.\{-}\ze=//

Для получения дополнительной информации о том, как проектировать reg.exps в Vim, см. :help pattern, которая является наиболее полезной справкой раздела в Vim IMHO.

:help :g и :help :v также могут бытьинтерес для вас.Например, вы можете сделать:

:g/=/normal! 0dt=

, который будет эмулировать вас, набрав 0dt = в каждой строке, содержащей знак =.

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