Я пытаюсь фильтровать письма по теме с помощью регулярного выражения.
Темы, которые я хочу сопоставить, читаются как [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-.*\\]