Как создать фильтр Gmail для поиска текста только в начале строки темы?

113

Мы регулярно получаем сообщения автоматической сборки от работающих серверов сборки Jenkins.

Было бы неплохо поместить их в ярлык, пропуская входящие.

Разумеется, использование фильтра - правильный выбор.

Желаемый идентификатор - это строка [RELEASE]в начале строки темы.

Попытка указать любое из следующих регулярных выражений приводит releaseк сопоставлению писем со строкой в любом случае в любом месте строки темы:

\[RELEASE\]*
^\[RELEASE\]
^\[RELEASE\]*
^\[RELEASE\].*

Из того, что я прочитал впоследствии, Gmail не имеет стандартной поддержки регулярных выражений, и из экспериментов кажется, что, как и в поиске Google, специальные символы просто игнорируются.

Поэтому я ищу параметр поиска, который можно использовать, возможно, что-то вроде того, что atstart:mystringсоответствует их has:,in: нотациями.

Есть ли способ заставить совпадение только в том случае, если оно происходит в начале строки, и только в том случае, если включены квадратные скобки?

Искренняя благодарность.

КомодоДэйв
источник
Не следует ^\[RELEASE\].*делать фокус, или я неправильно понимаю, что вы хотите сделать?
Hauns TM
Нет, независимо от экранирования, этот формат регулярного выражения не работает. Из того, что я читал, в gmail нет стандартной поддержки регулярных выражений, и из экспериментов кажется, что, как и в поиске Google, специальные символы просто игнорируются. Я ищу «секретный» флаг или такие , которые могут быть использованы» , возможно , что - то вроде atstart:mystringв соответствии с их has:, in:нотаций. Я добавлю эту информацию в свой пост для разъяснения, все равно спасибо.
KomodoDave

Ответы:

148

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

В настоящее время в Лаборатории нет таких функций. Фильтры SIEVE были бы другим способом сделать это, он тоже не поддерживался , похоже, больше нет окончательного заявления о поддержке SIEVE в справке Gmail.

Обновлен для гниения ссылок . Предварительно составленный список запросов на добавление функций был, например, составлен, оригинал находится на archive.org и датирован 2012 годом, теперь вы просто перенаправляетесь на упрощенную страницу, где рассказывается, как оставить отзыв. Отсутствие поддержки SIEVE было рассмотрено в ответе 78761 Поддерживает ли Gmail все функции IMAP? , поскольку некоторое время в 2015 году этот ответ молча перенаправляет на ответ о конфигурации клиента IMAP, у archive.org есть копия, датированная 2014 годом.

В текущих средствах поиска () {} []для группировки используются скобки любой формы , они не имеют заметного эффекта, если внутри есть только один термин. Использование (aaa|bbb)и [aaa|bbb]эквивалентно, и оба найдут слова aaaили bbb. Большинство других знаков пунктуации, в том числе \, обрабатываются как пробелы или разделители слов + - :и "имеют особое значение, см. Справку .

По состоянию на 2016 год {term1 term2}для этого документирована только форма " ", что эквивалентно поиску " term1 OR term2".

Вы можете выполнять поиск регулярных выражений в своем почтовом ящике (в определенных пределах) программно через документы Google: http://www.labnol.org/internet/advanced-gmail-search/21623/ имеет источник, показывающий, как это можно сделать (скопируйте документ, затем Tools > Script Editorполучить полный исходный код).

Вы также можете сделать это через IMAP, как описано здесь: Python IMAP ищет частичную тему и создает сценарий для перемещения сообщений в другую папку. Глагол IMAP SEARCH поддерживает только подстроки, но не регулярное выражение (поиск Gmail дополнительно ограничен полными словами, а не подстроками), потребуется дальнейшая обработка совпадений для применения регулярного выражения.

Для полноты, последний обходной путь: Gmail поддерживает добавочную адресацию , если вы можете изменить адрес назначения, youraddress+jenkinsrelease@gmail.comон все равно будет отправлен в ваш почтовый ящик, где вы можете фильтровать по адресу получателя. Обязательно используйте для фильтрации полный адрес электронной почты to:youraddress+jenkinsrelease@gmail.com. Это, конечно, более или менее то же самое, что настроить для этой цели выделенный адрес Gmail :-)

mr.spuratic
источник
Есть ли escape-символ для поиска скобок или знаков препинания?
Арон
@Aron Я так не думаю. Хотя некоторые знаки препинания обрабатываются специально (например, связанные с кодом c++), лучше думать о поиске как о работе только с предварительно проиндексированными словами.
mr.spuratic
Я думаю, вы можете использовать двойные кавычки, чтобы избежать скобок. Я использую в своих фильтрах, и похоже, что это работает. Если я использую, subject: {[term1] (part of term2}я нахожу все сообщения, содержащие как term1, так и часть term2 в теме. Но с формой, которую subject:{"[term1] (part of term2"}я нахожу все сообщения с темами, начинающимися точно с [term1] (часть term2
Изерлотти
1

Единственный способ, который я нашел для этого, - это найти точную формулировку и поместить ее в поле «Имеет слова». Не лучший вариант, но работает.

акции
источник
-7

Мне было интересно, как это сделать самому; похоже, что Gmail с тех пор незаметно реализовал эту функцию. Я создал следующий фильтр:

Matches: subject:([test])
Do this: Skip Inbox

И тогда я отправил сообщение с темой

[test] foo

И сообщение было заархивировано! Кажется, все, что нужно, - это создать фильтр для префикса темы, который вы хотите обработать.

mrfitzy
источник
5
Обратите внимание: если вы отправляете сообщение с темой «test foo», ваш фильтр также его поймает. «[test]» действительно ищет только «test» =)
Дэниел Гилл
25
Совет: если вы хотите проверить идею, попробуйте придумать способы ее опровергнуть. В вашем случае вы написали фильтр для захвата квадратных скобок, и ваш тест ожидал, что фильтр будет работать. Вы должны протестировать его, ожидая, что он потерпит неудачу, как указал @DanielGill. :)
pedromanoel