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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Brindeew                      2:5020/400     05 Jan 2003  19:39:11
 To : All
 Subject : regexp parser return
 -------------------------------------------------------------------------------- 
 
 Hi!
 
 Требуется расставить "немного экранной типографики" regexp'ами, в частности
 - неразбивные пробелы после однобуквенных предлогов (перловая имплементация
 http://www.artlebedev.ru/tools/typograf/ ).
 
   sub typograf_filter {
        # Экранная типографика
 
        my $text = shift;
        for ($text) {
            # 1. " - " => " тире "
            s/\s+- / — /g;
 
            # 2. Hеразбивающий пробел перед однобуквенными предлогами
            s/(\s+| |\()([укваояси](?:,){0,1})\s+/$1$2 /g;
 
            # 3. Hеразбивающий пробел между цифрами и наименованиями
           
 s#(\d)\s+(дБ|Вт|В|км|кг|этаж|лет|раз|см|мм|МПа|гг\.|г\.)#$1 $2#g;
 
            # 4. рис. N
            s/((?:рис|табл|Рис|Табл)\.)\s+(\d)/$1 $2/g;
 
            # 5. ". В " -> ". В "
            s/(\.\s+[УКВАОЯСИ])\s+(.)/$1 $2/g;
        }
        return $text;
    }
 
 Проблема в том, что блок номер 2 запинается на фразах типа " и в ла-ла-ла".
 После "и" замена происходит, а после "в" - нет. Как заставить парсер
 возвращаться?
 
 P.S. Если кто даст хитрый алгоритм выделения кавычек-лапок из обычных
 знаков дюйма ("), буду премного благодарен. Основная сложность для меня -
 правильно расставить кавычки в фразах типа ["ООО "Фирма Заря"]. Первые две
 - открывающие лапки, третья - закрывающая. Хэндлинг кавычек в кавычках
 (внутренние не лапками, а обычными "школьными" кавычками, которые все учили
 в первом классе - «„Бочкарев“ — пиво для
 сообразительных») нужно учитывать :-(.
 
 P.P.S. Пример с "Бочкаревым" честно содран с http://www.design.ru
 
 -- 
 WBR, Andrey Brindeew.
 "No one person can understand Perl culture completely"
 (C) Larry Wall.
 --- ifmail v.2.15dev5
  * Origin: MTU-Intel ISP (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 regexp parser return   Andrey Brindeew   05 Jan 2003 19:39:11 
 regexp parser return   Ruslan Bondarev   07 Jan 2003 02:41:46 
 Re: regexp parser return   Andrey Brindeew   10 Jan 2003 01:27:53 
 Re: regexp parser return   Artem Chuprina   10 Jan 2003 15:17:52 
 Re: regexp parser return   Andrey Brindeew   10 Jan 2003 23:05:16 
Архивное /ru.perl/3544b7a393d6.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional