Как удалить лишние пробелы в строке с помощью Regex
У меня есть ряд абзацев, которые я хочу разобрать с использованием регулярных выражений, но, к сожалению, абзац появляется со многими пробелами между предложениями, а иногда и словами. Я хотел бы иметь возможность удалить все лишнее белое пространство, но я не уверен, как это сделать... У кого-нибудь есть идеи? Я не хочу удалять все пробелы, что является единственным, что я нашел до сих пор, но сохранить обычный формат абзаца, так как после каждого слова есть пробел, и после каждого пунктуация+слово имеют пробел. Я кодирую на Perl.
любая помощь будет оценили!
3 ответов
канонизировать горизонтальные пробелы:
s/\h+/ /g;
канонизация вертикальных пробелов:
s/\v+/\n/g;
канонизировать все пробелы:
s/[\h\v]+/ /g;
вы можете использовать простой Perl regex
s/\s+/ /g;
FYI, такого рода вещи лучше всего делать с помощью инструмента unix tr
tr -s ' '
будет сжать пробелы на один пробел.
оба вышеприведенных ответа дают результат, но в обоих случаях в начале и конце строки есть пробел.
Если я использую эти регулярные выражения в string " Здравствуй, мир!", я получаю ответ " Здравствуй, мир!"
чтобы получить результат как "Здравствуй, мир!", следующее регулярное выражение perl будет работать нормально
$a =~ s/(?<!\w) //g;
используя look-behind здесь, все дополнительные интервалы удаляются.