Отправляет email-рассылки с помощью сервиса Sendsay

Регулярные выражения (RegExp'ы): нужна консультация и помощь

Добрый день, друзья!

Подскажите, есть в данном комьюнити специалисты по регулярным
выражениям?.. Может кто-нибудь помочь консультативной или практической
помощью?..

В качестве благодарности буду рад отключить Вам рекламу Subscribe.ru
сроком на год :) Стоимость услуги у самого Subscribe.ru = 300 p.

Итак, нужно силами регулярных выражений в PHP (а насколько я знаю,
PHP поддерживает и синтаксис регулярных выражений Perl'a) реализовать
следующее:

есть некий текст, состоящий из 3-х частей:
шапки, тела, подписи (или, как говорят, хедера, боди и футера).
Необходимо из текста убрать хедер и футер (я предполагаю делать
это с помощью функции eregi_replace(); или иной (может подскажете).

что известно, известно о части текста под названием "шапка"
(хедер):

во-первых, текст начинается именно с нее,
во-вторых, она занимает несколько строк, причем неизвестно сколько
(т.е. это может быть 3 строки или больше),
в-третьих, она может содержать любые символы (текст, числа и т.п.),
но заканчивается она всегда следующим образом: указан е-мэйл, часть
у которого постоянная (всегда) и выглядит так:
-lala@a*****.by
после этого е-мэйла может быть от нуля до нескольких пробелов, перевод
строки и длинная строка, составленная из знаков равно
т.е. типа: (точно не задано,
сколько их, т.е. число может менять, но в любом случае больше 30

удалить нужно будет всю шапку, включая ту строку, которая состоит из
этих знаков равно... на них просто ориентироваться нельзя, т.к. иногда
в середине шапки текста может присутствовать такая же линия из знаков
равно, но сочетание типа концовка е-мэйла пробелы (если есть) переход
строки и длинная линия из знаков равно является явным окончанием шапки.

Пример шапки:

. ля траляля ля .
.................... [ красивый текст ] ..............................
. 222 333 44 - числа (!) <= знаки разные
опять текст и числа 222 снова текст и числа 333 и еще немного текста -
числе 22-33-2008 опять текст и числа префикс.текст-lala@a*****.by
вот это был пример шапки - несколько строк, мы не знаем, что в ней
(может быть разное), но четко всегда она заканчивается одним и тем же.

теперь по поводу футера (или подвала)...

что известно про него - им заканчивается текст
количество строк в нем четко не определено, может изменяться, но зато
четко известно, с чего начинается подвал, а начинается он вот с такой
последовательности символов: тире звездочка тире (несколько - от 4)

-жгде после звездочки минимум идет четыре знака тира (но может идти
больше) причем явно известно, что на этой строчке кроме пробелов
(возможных, т.е. пробелы от 0 до не знаю скольки) ничего нет, это
знак начала футера

обращаю Ваше внимание, что ниже последовательность знаков начала
футера может еще раз повторяться, т.е. например так:

-жфутер шмутер тра ля ля
и еще какая-то строчка с разными знаками ! . " @ и т.п.
-жи снова какие-то строчки непонятной природы...

Вот. Надеюсь, что объяснил достаточно подробно.

Вот пример текста, над которым можно эксперементировать:
http://soros.cima.ru/temp/regexp-example.txt

и вот, что после удаления хедера и футера должно остаться:
http://soros.cima.ru/temp/regexp-result.txt

--
28.01.2008 - 11:01

С уважением, Славников Дмитрий
http://subscribe.ru/author/9810
E-mail: slavnikov***@c*****.by
Mobile: (+375 29) 629-30-43
ICQ: 115041944



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "Dmitry V. Slavnikov" Mon, 28 Jan 2008 11:04:23 +0200 (#721112)

 

Ответы:

Здравствуйте

Вот, чего-то набросал

http://rzs.host.sk/del.php

Вроде то, что просили.

Добрый день, друзья!

Подскажите, есть в данном комьюнити специалисты по регулярным
выражениям?.. Может кто-нибудь помочь консультативной или практической
помощью?..



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "RZS" Mon, 28 Jan 2008 20:58:31 +0200 (#721333)

 

Добрый день, RZS!

28.01.2008 Вы написали мне письмо:
mid:20080129105637.7213***@i*****.subscribe
Тема: "Re: Регулярные выражения (RegExp'ы): нужна консультация и помощь"

Не хочет работать (удаляет только футеры).
Я вот закачал "живые" примеры (18 файлов):
http://soros.cima.ru/temp/01.txt
...
http://soros.cima.ru/temp/18.txt

У меня есть работающий на всех "живых" примерах RegExp, который
составила уважаемая Наталья Сысоева. Но если интересно решить
эту задачку, то буду рад продолжить обсуждение темы.

--
29.01.2008 - 12:19

С уважением, Славников Дмитрий
http://subscribe.ru/author/9810
E-mail: slavnikov***@c*****.by
Mobile: (+375 29) 629-30-43
ICQ: 115041944



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "Dmitry V. Slavnikov" Tue, 29 Jan 2008 12:22:49 +0200 (#721394)

 

Здравствуйте, Друзья.

очень нужен сабж.
скажите существуют ли портированные версии для Windows?

или альтернативу, но для Windows.
Ratinal Rose не предлогать.

и желатеально что-нить не очень большое в размере дистрибутива.
что бы скачать можно было.

заранее всем спасибо.
надеюсь что конференция еще работает.

Ответить   Tue, 29 Jan 2008 18:18:21 +0500 (#721419)

 

On Tue, 29 Jan 2008 15:18:21 +0200, <di***@d*****.ru> wrote:
Дима, может я и ошибаюсь, но не существует портированных аналогов.
Вот всё что есть:
http://uml.sourceforge.net/install.php

Может, предлагать что-то ближе к ERWin??

Ответить   Tue, 29 Jan 2008 15:35:33 +0200 (#721424)

 

Здравствуйте, nundesign.

Вы писали 29 января 2008 г., 18:35:33:

грустно -(

прийдется разбираться с этой штукой.
но если я правильно понял... Эрвин поубогее будет.

в любом случае спасибо.
закончу свои бесплоезные поиски.

из не больших нашел ArgoUML под Windows. посмотрю её.

Ответить   Tue, 29 Jan 2008 18:44:19 +0500 (#721430)

 

Здравствуйте, nundesign.

Вы писали 29 января 2008 г., 18:35:33:

а существует ли Umbrello UML Modeller в виде rpm?
очень нужно.

Ответить   Wed, 30 Jan 2008 12:55:51 +0500 (#721567)

 

Здравствуйте

И действительно, были глюки.

Уже все переписал и теперь все работает 100%

Даже 2 версии.

http://rzs.host.sk/del.php
http://rzs.host.sk/del2.php
http://rzs.host.sk/del.zip

Не хочет работать (удаляет только футеры).
Я вот закачал "живые" примеры (18 файлов):
http://soros.cima.ru/temp/01.txt
...
http://soros.cima.ru/temp/18.txt

У меня есть работающий на всех "живых" примерах RegExp, который
составила уважаемая Наталья Сысоева. Но если интересно решить
эту задачку, то буду рад продолжить обсуждение темы.



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "RZS" Tue, 29 Jan 2008 20:31:38 +0200 (#721496)

 

Глюки остались, хедер не удаляется
посмотрите для http://soros.cima.ru/temp/05.txt

Вот мой вариант без особых наворотов, вроде работает

/*
Исхожу из:
- в теле текста нет последовательност из = (30 символов и более)
- текст обязательно заканчивается -*--
Функция вернет текст полностью,
если в тексте не будет шапки и подвала вообще
(http://soros.cima.ru/temp/18.txt)
*/

//функция
function slavnikov($content){
//берем последнюю часть текста после последовательности $txt = split("[=]{30,}(\n|\r)",$content);
$txt = $txt[sizeof($txt)-1];
//берем первую часть текста перед последовательностью -*--
$txt = split("\n-\*--",$txt);
//обрезаем переводы кареток и пробелы и возвращаем текст
return trim($txt[0]);
}

echo slavnikov($content);//вызываем функцию - передаем текст



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Tue, 29 Jan 2008 22:56:54 +0300 (#721501)

 

Здравствуйте

Глюки остались, хедер не удаляется
посмотрите для http://soros.cima.ru/temp/05.txt

Если в тексте строчки из знаков = не предвидятся вообще, то еще проще

// Режем текст на строчки и складываем в массив
$mess2 = explode("\r\n",$mess);
// Сюда будем сохранять результат
$mess = "";

// Переберем массив по строчкам
for($i=0;$i<count($mess2);$i++){

// Если нашли начало футера-прекращаем цикл
if(eregi("-*-----", $mess2[$i])) break;

Сохраняем строчки
$mess.=$mess2[$i]."\r\n";

// Если нашли линию из знаков = обнуляем сохраненвые строчки
if(preg_match("/^[\=]{30,}$/i", $mess2[$i], $result)){
$mess="";
}

}

Результат смотрим тут http://rzs.host.sk/del.php



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "RZS" Wed, 30 Jan 2008 13:55:17 +0200 (#721625)

 

1) зачем так усложнять, когда можно просто отрезать регуляркой лишнее (что я
показал в предыдущий раз)

2) теперь ваш скрипт теряет часть текста отсюда
http://soros.cima.ru/temp/01.txt
(таблицу после "РЕГЛАМЕНТ КОНФЕРЕНЦИИ:")

Алексей

ЗЫ прежде чем посылать скрипты надо проверить на материале




библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Wed, 30 Jan 2008 16:06:39 +0300 (#721635)

 

Добрый день, коллеги!

30.01.2008 Вы написали мне письмо:
mid:20080130160129.7216***@i*****.subscribe
Тема: "Re[5]: Регулярные выражения (RegExp'ы): нужна консультация и помощь"

я

Коллеги, Наталья Сысоева сделала отличный регэксп, который спокойно
обрабатывает любой из "живых" файлов, удаляя только нужное и не трогая
основной текст. Поэтому, всем спасибо за участие. Всем, кому обещал,
я уже "купил" фичу "Рассылки без рекламы" на год. Если кого-то забыл,
то, пожалуйста, не стесняйтесь и не обижайтесь, просто напомните мне,
у меня сейчас страшный цейтнот.

Еще раз СПАСИБО всем!

--
30.01.2008 - 17:28

С уважением, Славников Дмитрий
http://subscribe.ru/author/9810
E-mail: slavnikov***@c*****.by
Mobile: (+375 29) 629-30-43
ICQ: 115041944



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   "Dmitry V. Slavnikov" Wed, 30 Jan 2008 17:30:07 +0200 (#721675)