Регулярные выражения.
Здравствуйте.
Я пользуюсь следующим правилом в .procmailrc для удаления рекламы из
писем:
| sed -e '/-\*------/,/----++-/d' >> "SubscribeRu"
Рекламные блоки сделаны в формате:
- * РЕКЛАМА
+ +
-
(Пробелов вокруг * и + на самом деле нет, но я их добавил, чтобы люди, у
которых этот фильтр уже работает, поняли мою мысль :-))
Все нормально работает, за исключением случаев, когда рекламы нет.
"Побег отменяется - забор убрали" (C) :-)
Пример:
- * ТЕКСТ ПИСЬМА
Т.к. отсутствует последняя строка (+ + -) - удаляется все
до конца письма.
Как можно обойти эту беду?
Один из вариантов - проверить перед вызовом sed-a, есть ли в письме
реклама, возможно это можно сделать с помощью grep-a.
Например, вот такой шаблон реагирует на рекламу, если бы она была в одну
строку:
grep -e '-\*--.*--\+\+-'
Если я верно понял .* - не включает в себя \n.
Можно ли составить регулярное выражение так, чтобы охватить несколько
строк, или они принципиально работают только с одной строкой?
Может быть, эту задау - проверить, есть ли у реклама в письме - можно решить
средствам sed-a или еще как-нибудь?
И еще вопрос. Вы из моего письма уже поняли, что я очень нечетко
представляю себе регулярные выражения и работу с ними. Подскажите,
пожалуйста, есть ли что-нибудь почитать на эту тему, кроме
man egrep
info sed
On Fri, 17 Mar 2006 11:00:55 +0300, Andrey Kostenko <kosandry***@u*****.net>
wrote:
http://files.nixp.ru/books/programming/regexp/
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 25460; Возраст листа: 966; Участников: 1472
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/528220