Назад | Перейти на главную страницу

Vim Pattern заменить

 <created>
  pat@c.com 
</created>

Я хочу заменить указанное выше на, но имя пользователя может отличаться, например, pat @ c.com, harry @ c.com ...

  <created>
   tom@c.com
  </created>

Какая команда заменяет это в vim

 %s/<created>\r*\r</created>/new string

У меня это сработало так:

%s/<created>\n\s*\w*@\w*\n<\/created>/newstring/

Если вы хотите повторно вставить адрес электронной почты, вы можете использовать:

%s/<created>\n\s*\(\w*@\w*\)\n<\/created>/newstring: \1/

Немного пояснения:

  • \n: новая линия
  • \s: пробелы и табуляции
  • \w: любой символ слова
  • \( и \): захватить то, что внутри
  • \1: использовать первое захваченное выражение