| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > перенос строки \n |
| Автор: evya 5.2.2011, 17:10 |
| удаляю перенос строки $br="<br>"; $des =~ s/\n/$br/g; кое где удаляет, а кое где остается?! что за хрень подскажите??? |
| Автор: ming 5.2.2011, 20:20 |
| s/\r|\n/$br/gs; |
| Автор: alezzz 5.2.2011, 20:44 |
ming, а зачем так? для текста из Windows будет два <br> на каждый перенос строки, и все нормально работает без /s, "." (точка) в выражении не участвует. evya, покажите где удаляет и где не удаляет. Добавлено странно.. взял текстовый файл в Windows с переводом строки двумя символами /r/n, проверил двумя выражениями: s/\n/<br>/g и s/\r|\n/<br>/g -- эффект одинаковый, все переводы строки заменились на <br> |
| Автор: MasterOfRegex 16.2.2011, 12:37 |
| Правильно s/\r?\n/$br/g; Но лучше удалить \r, а потом заменять: tr/\r//d; s/\n/$br/g; |
| Автор: alezzz 16.2.2011, 17:18 |
| Выяснилась другая вешь, достаточно \n, это никак не привязано к коду символа переноса, перл воспринимает это как логический перенос строки в зависимости от системы на которой установлен перл. Проверял по Windows варианты с \n\r и с \n -- результат одинаковый. Единственное что не проверил это как обрабатываются в Unix файлы созданные в Windows. http://perldoc.perl.org/perlport.html#Newlines |