#regex #vim #diff #removing-whitespace
#регулярное выражение #vim #разница #удаление-пробел
Вопрос:
Я понимаю, что в vim я могу выделить конечные пробелы в конце строки, используя
match /s $/
Теперь я хотел бы исключить из сопоставления те строки, которые содержат ровно один пробел. Как мне это сделать? (Это не обязательно должна быть одна строка / регулярное выражение.)
Ответ №1:
match /(Szss $)|(^s{2,}$)/
Это должно сработать — разбить его на 2 раздела
Часть 1 — поиск пробелов в конце строки, в которой есть другие элементы: (Szss $)
не пробел S
,
затем начните сопоставление zs
,
1 или более пробелов в конце строки s $
ИЛИ сопоставьте |
Часть 2 — Поиск более одного пробела, который является всей строкой: (^s{2,}$)
начните с начала строки ^
поиск не менее 2 пробелов s{2,}
в конце строки $
Комментарии:
1. Да! Удивительно, именно то, на что я надеялся, большое спасибо! Кроме того, спасибо за объяснение. 🙂
2. Также рассмотрим более короткое регулярное выражение :
(^ $)@!amp;s $
.3. @ib. — хорошо, я поиграл с @ и amp; и не смог заставить их работать правильно.
Ответ №2:
Это сопоставляет все строки, содержащие более одного пробела, исключая строки, содержащие один пробел.
match /ss $/
Комментарии:
1. Мне нравится эта идея, но это также скроет одиночные пробелы в конце обычных строк, которые состоят не только из пробела.