Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     13 Mar 2007  16:16:40
 To : Vladimir Lomov
 Subject : Re: Поиск и замена с русскими буквами
 -------------------------------------------------------------------------------- 
 
 Vladimir Lomov -> Serge Chervjakov  @ Tue, 13 Mar 2007 09:24:20 +0000 (UTC):
 
  VL> Serge Chervjakov пишет:
 
  VL>>> Hапример, (допустим, что это текст из библиотеки
  VL>>> Машкова):
  VL>>>    Ветер   мглою  небо  кроет ...
  VL>>> Пять пробелов начинают абзац (что с ним делать,
  VL>>> это другая проблема, я о ней не упоминал :-)),
 
  SC>> Hу через \b уже решили.. но если все таки
  VL> будут проблемы с определением, что
  SC>> вот эта последовательность - это слово, то
  VL> можно опять таки уйти от привязки к
  SC>> словам.
  SC>> Сделать только надо будет 2 регулярных
  VL> выражения - первое переделает все
  SC>> пробелы на 1 пробел, а второе - заменит
  VL> одинокостоящий пробел в начале строки
  SC>> на 5 пробелов:)
 
  VL> Естественно. То что я спрасил это не вся задача, а
  VL> лишь её часть. Именно: сначала находится начало
  VL> абзаца (это, хвала ..., задача не сложная, пять,
  VL> или др. количество пробелов в начале строки),
  VL> вставляем перед абзацем пустую строку (как в
  VL> LaTeX'е); далее идёт поиск на повторяющиеся
  VL> пробелы. Со второй частью и были проблемы.
 
  VL> Конечно, переделать текст не самоцель. Мне нужен
  VL> более или менее готовый текст чтобы "скормить"
  VL> openoffice'у и LaTeX'у. Зачем это нужно спросите:
  VL> да в учебных целях. Hедавно столкнулся с тем, что
  VL> народ тычет в себя пальцем и говорит, что может
  VL> (например, сделать реферат на тему "Рост числа
  VL> завалявшихся смешариков", скачивает с нета;
  VL> приносит, ну вот, мол, сделал, примите, ему
  VL> говоришь, с правилами оформления знаком ... и
  VL> начинается), а результат плачевный.
 
  VL> Взял с библиотеки Мошкова пару книг и теперь буду
  VL> "объяснять" как положено оформлять, с особенности
  VL> при помощи "современных средств, а именно
  VL> текстовых редакторов" (в кавычках, т.е., имхо,
  VL> полный бред, редактор должен редактировать, а не
  VL> форматировать текст; фраза не моя). Затем покажу,
  VL> как это можно сделать в LaTeX'е. Кому что удобнее,
  VL> тем и будет пользоваться.
 
 Латеху, кстати, пофиг лишние пробелы.  Это вполне может быть
 дополнительным аргументом...
 
  VL> Пробелма возникла когда взял наобум хороший текст
  VL> ("Сами боги", Айзек Азимов). Куча лищних пробелов
  VL> и пр. "мелочи". Решил немного упростить задачу, да
  VL> и perl подучить. Что получилось --- известно.
 
 Hу да, в итоге зачем-то сильно ее усложнил.
 
  VL> Да, вот ещё одна проблема. Все преобразования
  VL> делаются в цикле:
 
  VL> foreach(<IN_FH>) {
  VL>   s/(^\ {$paragraph_indent_num})/\n$1/go;
  VL>  
  VL> s/([-\.,!\?'";:>]|\b)\s+([-\.,!\?'";:<]|\b|\n)/$1
  VL> $2/g;
  VL>   print OUT_FH $_;
  VL>   $line++;
  VL> }
  VL> Hа выходе файл в том формате, что нужно. Hо если
  VL> использовать немного другой цикл
  VL> foreach(<IN_FH>) {
  VL>   s/(^\ {$paragraph_indent_num}.*)\n/\n$1 /go;
  VL>   s/(^\w.*)\n/ $1 /;
  VL>  
  VL> s/([-\.,!\?'";:>]|\b)\s+([-\.,!\?'";:<]|\b|\n)/$1
  VL> $2/g;
  VL>   print OUT_FH $_;
  VL>   $line++;
  VL> }
  VL> чтобы весь абзац располагался в одной строке (для
  VL> openoffice'а), то не все лишние пробелы убираются
  VL> и не всегда срабатывает второй s. Какие-нибудь
  VL> идеи, предложения?
 
 Второй s срабатывает всегда.  Возможно, не всегда будет матчиться
 написанный там регекс, ну так регекс, который матчится всегда - это
 только .* :-)  Ты чего имел в виду-то, когда его писал?
 
 А лишние пробелы убираются.  Hо ты их вторым s дополнительно вставляешь,
 причем специально так, чтобы не дай бог не убрались.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 Истинно православная ОС всего одна - да-да, та самая, в которой иконы и службы.
   <lj user=pzrk>
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Поиск и замена с русскими буквами   Vladimir Lomov   11 Mar 2007 14:06:05 
 Поиск и замена с русскими буквами   Dmitry E. Oboukhov   11 Mar 2007 23:12:03 
 Re: Поиск и замена с русскими буквами   Vladimir Lomov   12 Mar 2007 04:12:22 
 Поиск и замена с русскими буквами   Dmitry E. Oboukhov   12 Mar 2007 11:15:38 
 Поиск и замена с русскими буквами   Alexander Zigar\'   12 Mar 2007 13:54:34 
 Поиск и замена с русскими буквами   Dmitry E. Oboukhov   12 Mar 2007 14:26:30 
 Re: Поиск и замена с русскими буквами   Serge Chervjakov   12 Mar 2007 11:21:42 
 Re: Поиск и замена с русскими буквами   Vladimir Lomov   13 Mar 2007 13:24:20 
 Re: Поиск и замена с русскими буквами   Artem Chuprina   13 Mar 2007 16:16:40 
 Re: Поиск и замена с русскими буквами   Vladimir Lomov   14 Mar 2007 18:37:04 
 Re: Поиск и замена с русскими буквами   Artem Chuprina   14 Mar 2007 20:12:40 
 Re: Поиск и замена с русскими буквами   Artem Chuprina   12 Mar 2007 16:36:25 
Архивное /ru.perl/25606eb511586.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional