регулярное выражение: выбор предложения - PullRequest
0 голосов
/ 14 октября 2010

как сохранить предложения, начинающиеся с критериев X, и удалить предложения, соответствующие критериям Y. используя vim, я хотел бы удалить все предложения, которые не начинаются с void.

void set_first_name (строка in_first_name);
строка first_name ();
void set_last_name (строка in_last_name);
строка last_name ();
void set_composer_yob (int in_composer_yob);
int composer_yob ();
void set_composer_genre (строка in_composer_genre);
строка composer_genre ();
void set_ranking (int in_ranking);
int rating ();
void set_fact (string in_fact);

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

Команды vim: g и: v помогают здесь.

:g/regex/action

'g' глобально выбирает все строки, соответствующие регулярному выражению, и применяет к ним действие.'v' инвертирует регулярное выражение (например, grep -v), поэтому применяет действие ко всем несоответствующим строкам.

Таким образом, чтобы удалить все строки, не начинающиеся с void:

:v/^void/d

где«d» - действие по удалению строки.

0 голосов
/ 14 октября 2010

Обычно регулярное выражение для этого будет выглядеть так:

^(?!\s*void).*\n

Т.е. соответствует началу строки (^), а затем утверждается, что вы не можете сопоставить void здесь,необязательно предшествует пробел, затем сопоставьте все символы до следующего перевода строки.

Похоже (спасибо @Al), что vim поддерживает прогнозирование с помощью другого синтаксиса (\@! для отрицательного, \@= для положительного прогнозирования), поэтому этот шаблон можно преобразовать в

^(\@!\s*void).*\n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...