2015-04-08 2 views
1

Я пытаюсь отредактировать файл .procmailrc, чтобы избавиться от мусора.Регулярное выражение для строк, не содержащих скобок

Счет от отделов CS в моей школе, все письма в пределах отдела имеют предметы с кронштейнами в них, например:

[Majors] Некоторые Subject

или:

[старшекурсники] Другой Тема

Я получаю много спама, не пойманного фильтрами, но почти все они не включают скобки. Я хочу переместить эти письма в папку для спама, но не могу понять REGEX. Какие-нибудь регулярные выражения могут помочь?

+0

Вы можете сопоставить открытую скобку с '[[]' или совпадением всех символов, кроме открытой скобки с '[^ [] '. Полный список 'regex', поддерживаемый' procmail', находится в 'man 5 procmailrc'. –

ответ

2

Простой рецепт Procmail для Subject: заголовков, которые не содержат открытия квадратных скобок просто

:0 # Add a second colon if the spam box is an mbox folder 
* ^Subject:[^[]*$ 
spam 

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

... Но для полноты я упомянул, что если вы хотите, чтобы там была закрывающая квадратная скобка, это особый случай, который требует определенного порядка в классе символов (точно так же, как тире нужно идти первым или последним чтобы устранить его из диапазона символов). Обычно рассматриваемый класс символов этого типа - [^][], который является символом отрицательного символа, содержащим замыкающую квадратную скобку и квадратную скобку открытия. Они должны быть точно в этом порядке, чтобы они работали; в любой другой позиции закрывающая квадратная скобка закрывает класс символов. (Вы не можете сбрасывать обратную косую черту, либо туда, либо обратные косые черты в символьных классах.)

+0

Огромное вам спасибо! Я думаю, что проблема с закрытой скобкой, которую вы объяснили, - это точная проблема, с которой я столкнулся. Это отлично работает и действительно работает с procmail. – easyxtarget

0

Вы можете настроить свой .procmailrc в определенном порядке, чтобы помочь выполнить то, что вы хотите. procmail читает procmailrc и останавливается с первым рецептом, который соответствует. Поэтому вы можете выполнить всю свою обычную обработку в начале файла, а в конце добавить в конце что-то похожее на следующее.

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

:0:      # keep mail with [ in 'good' folder 
* ^Subject:.*\[ 
good 

:0:      # move unmatched to 'spam-probably' folder 
spam-probably 

Примечание:, не имея состояния линии в spam-probably рецепте, Procmail будет перемещать все сообщения, которые ранее не совпавшие рецепт в папку spam-probably. Есть буквально десятки regexs, которые вы можете выбрать, чтобы выполнить свой предметный матч на [ в зависимости от того, насколько вы плотны или свободны. Посмотрите на регулярные выражения, которые сделают то, что вам нужно, и замените их по мере необходимости.

Смежные вопросы