Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Удаление пробелов и переводов строк

#регулярные_выражения #perl


Для того что б вырезать все пробелы и переводы строк, как с начала, так и с конца,
+ убирать двойные пробелы, написал регулярку:
$opis =~ s/^\s+|^(\r?\n)+|\s+$|(\r?\n)+$//g;
$opis =~ s/\s+/ /g;

Локально все работает, как только запускаю на сервере, работать не хочет.
Вернее оно удаляет вообще все переводы строк, даже те, что есть в середине текста.
Почему?    


Ответы

Ответ 1



\s в регулярном выражении означает и перевод каретки в том числе, поэтому в середине строки исчезают переводы. используйте \h $opis =~ s/^\s+|\s+$//g; $opis =~ s/\h+/ /g;

Ответ 2



Потому что g в конце поставил. Рекомендую начальные/конечные пробелы убирать одной регуляркой (или двумя), а двойные переводы строк другой, уже с g.

Ответ 3



$opis=~s/\s{2,}|\n//g

Комментариев нет:

Отправить комментарий