Назад | Перейти на главную страницу

Сито: фильтровать тему с помощью регулярного выражения, файл в почтовый ящик с именем совпадение

Я пытаюсь фильтровать письма по теме с помощью регулярного выражения.

Темы, которые я хочу сопоставить, читаются как [git-foo] some more text где foo это строка, которую я хочу проверить.

Я получаю следующее

require ["fileinto", "variables", "regex"];

if header :regex "subject" "^\[git-.*\]" {
    set :lower :upperfirst "repository" "${1}";

    if string :is "${repository}" "" {
        fileinto "Test/default";
    } else {
        fileinto "Test/${repository}";
    }
}

Замена сначала if заявление с if header :matches "subject" "[git-*" { отправляет письма в Test/Foo] some more text но при исправлении "[git-*" к "[git-*]", письма не совпадают.

Регулярное выражение работает с grep -e.

Что делать, чтобы правильно отправлять почту в Test/Foo?

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

if header :regex "subject" "^\\[git-(.*)\\]" {
  set :lower :upperfirst "repository" "${1}";
  // ...
}

Пояснение:

  • в отличие :Спички, : регулярное выражение устанавливает только переменные соответствия ($ 1 и т. д.) для группы захвата. :Спички устанавливает их для каждого подстановочного знака.

  • : регулярное выражение действительно требует побега [ и ], но с двойной обратной косой чертой.

Вместо этого работает это регулярное выражение?

'[git - (. *)]'

Возможно, сейчас немного поздно, но я обнаружил, что мне нужно указывать папки с точками вместо косой черты: например. 'fileinto "Test.default"'.

Вам нужно дважды убежать, чтобы \[git-.*\] становится \\[git-.*\\]