2017-01-04 4 views
1

Я пытаюсь использовать vime regex, чтобы стереть все после двоеточия : и пробел или символ новой строки. Ниже приведен текст, над которым я работаю.Vim regex стирает все между двоеточием и пробелом или новой линией

ablatives  ablative:ablative_A s:+PL 
abounded  abound:abound_V ed:+PAST 
abrogate  abrogate:abrogate_V 
abusing ab:ab_p us:use_V ing:+PCP1 
accents'  accent:accent_N s:+PL ':+GEN 
accorded  accord:accord_V ed:+PAST 

Так что я хочу получить от этого следующий:

ablatives  ablative s 
abounded  abound ed 
abrogate  abrogate 
abusing ab us ing 
accents'  accent s ' 
accorded  accord ed 

Я довольно потерял на этом, но я пытаюсь заявление ниже:

:s/\:.//g 

I Я пытаюсь использовать это, чтобы получить хотя бы один из шаблонов, которые мне нужны.

ответ

0

Это, кажется, дает результаты, которые вы хотите:

:%s/:.\{-}\([ \n]\)/\1/g 
  • : - буквальный :. Я не уверен, почему вы избежали этого в своем вопросе, поскольку вам это не нужно.
  • . - mach любой символ.
    • \{-} - повторил ноль или более раз как можно меньше («ungreedy», как *? во многих других регулярных выражений двигателей).
  • \( - запустите новую подгруппу для справки в шаблоне замены.
    • [ - старт «соответствует ни одному из этих символов
      • -. Буквального пространство
      • \n -.. Перевод строки
    • ] - конец [
  • \). - конец подгруппа

В заменяемом шаблоне мы используем \1 для вставки пространства или новой строки в зависимости от того, что мы заменили.

Вы также можете использовать \_s вместо [ \n], это будет соответствовать всем пробелам, вкладкам и символам новой строки. Я лично предпочитаю [ \n], так как это более переносимо для двигателей regexp (тогда как \_s - это специфическая для Vim конструкция).

см. :help <atom> для получения дополнительной информации по любому из перечисленных выше.

0
 
:%s/:[^ ]*//g 

Это удаление :, за которым следует ноль или более символов пробела.Newline символ в конце строки не будет затронут

2

Просто, вы можете сделать:

:%s/:\S*//g 

\S непробельного характера;

 Смежные вопросы

  • Нет связанных вопросов^_^