Для простоты предположим, что у нас есть входные строки в следующем формате:
*text1*|*text2*
Итак, я хочу оставить text1 в покое и удалить все пробелы в text2 .
Это может быть легко, если бы у нас не было text1 , простой поиск и замена, как это сделало бы:
%s/\s//g
но в этом контексте я не знаю, что делать.
Я пробовал что-то вроде:
%s/\(.*|\S*\).\(.*\)/\1\2/g
, который работает, но удаляет только первый символ, я имею в виду, это должнозапускаться на одной и той же строке один раз для каждого ошибочного пробела.
Таким образом, предпочтительным ограничением является решить эту проблему только одним поиском и заменить .И, хотя я использовал синтаксис Vim, использовал вариант с регулярным выражением, с которым вам удобнее всего отвечать, я имею в виду, что, возможно, вам нужны некоторые функции, предлагаемые только Perl.решение для Vim:
%s:\(|.*\)\@<=\s::g