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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Vladimir Litovka                     2:5020/400     05 Feb 2004  01:24:23
 To : Alexey Mahotkin
 Subject : Re: rfc822 regexp
 -------------------------------------------------------------------------------- 
 
 
 Alexey Mahotkin wrote:
 
 > Парсинг RFC822 с помощью регексов -- чья-то старая не очень добрая шутка,
 > которая ходит с тех пор по неокрепшим умам.
 
 да собственно мне ведь не парсинг нужен в полном объеме, а всего лишь 
 выкусывание подстроки из хитрой строки :)
 
 > Удали из этого списка те адреса, которые тебе не нравятся, и собери их
 > обратно в соответствующие поля.  Hа RFC822-комментарии забей.
 
 ну я в итоге сделал примерно так - только не разбираю по-адресно всю 
 строку, а выделяю из нее три части - _до_ нужного мне фрагмента, собственно 
 фрагмент и _после_ него. В первом приближении получилось вот так (смотрится 
 страшно :-) ), может еще как-то можно оптимизироваться, но я пока не вижу:
 
 $remove = "toremove user <toremove\@qqq>";
 $header = "Subject: test\nCc: empty\@qqq, toremove\@qqq\nTo: toremove user 
 <toremove\@qqq>";
 
 if ($header =~ s/(^|\n)((?:To):[ \t]+)(.*?)([,\s]*)(?:$remove)([, 
 \t]*)(.*?)((\n(\w))|$)/$1$9/is) {
 
    chomp $header;
 
     if ($4 && $5) {   # Between other field's entries
       $header .= "\n".$2.$3.', '.$6;
      }
     elsif ($4) {   # Last in field
       $header .= "\n".$2.$3.$6;
      }
     elsif ($5) {   # First in field
       $header .= "\n".$2.$6;
      }
     # else - single in field, do nothing
   }
 
 К сожалению, парсить сразу и To, и Cc (т.е. написать (To|Cc)) не 
 получается, т.е. придется запускать этот regexp дважды. Интересно, он очень 
 сложный и медленный? :-)
 
 > Я не знаю, зачем бы мог понадобиться другой алгоритм.
 
   красивее сделать одним выражением, правда? :-)
 
 -- 
 Man is incomplete until he is married. Then he is finished.
 --- ifmail v.2.15dev5.3
  * Origin: Svit Online (post does not reflect views of Golden Tele (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 rfc822 regexp   Vladimir Litovka   04 Feb 2004 06:47:31 
 Re: rfc822 regexp   Alexey Mahotkin   04 Feb 2004 11:24:44 
 Re: rfc822 regexp   Valentin Nechayev   04 Feb 2004 12:12:05 
 Re: rfc822 regexp   Vladimir Litovka   05 Feb 2004 01:24:23 
 Re: rfc822 regexp   Alexey Mahotkin   05 Feb 2004 01:44:38 
 Re: rfc822 regexp   Vladimir Litovka   05 Feb 2004 02:00:48 
 Re: rfc822 regexp   Vladimir Podgorny   04 Feb 2004 11:47:03 
 Re: rfc822 regexp   Valentin Nechayev   04 Feb 2004 12:12:05 
 Re: rfc822 regexp   Vladimir Litovka   05 Feb 2004 01:56:35 
 Re: rfc822 regexp   Valentin Nechayev   05 Feb 2004 10:55:29 
Архивное /ru.perl/167950ef162a8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional