Esse regex funciona em vez disso?
'[git - (. *)]'
Estou tentando filtrar e-mails por assunto com uma expressão regular.
Os assuntos que desejo corresponder são lidos como [git-foo] some more text , em que foo é a sequência que desejo verificar.
Eu acabo com o seguinte
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}";
}
}
Substitui a primeira instrução if por if header :matches "subject" "[git-*" { emails em Test/Foo] some more text , mas, ao corrigir "[git-*" a "[git-*]" , os e-mails não correspondem.
A expressão regular funciona com grep -e .
O que fazer para arquivar e-mails corretamente em Test/Foo ?
Esse regex funciona em vez disso?
'[git - (. *)]'
Você precisa combinar os dois grupos de captura e as folgas duplas. Ambos foram mencionados em respostas anteriores, mas separadamente.
if header :regex "subject" "^\[git-(.*)\]" {
set :lower :upperfirst "repository" "${1}";
// ...
}
Explicação:
ao contrário de : corresponde , : regex define apenas variáveis de correspondência ($ 1, etc.) para o grupo de captura. : corresponde define-os para cada caractere curinga.
: regex exige, de fato, o escape de [ e ] , mas com uma barra invertida dupla.
Você precisa escapar duas vezes, para que \[git-.*\] se torne \[git-.*\]
Pode ser um pouco tarde agora, mas descobri que precisava especificar pastas com pontos em vez de barras: por exemplo. 'fileinto' Test.default "'.
Tags grep regex dovecot email-server sieve