Sieve: filtra o assunto com regex, arquivo na correspondência da caixa de correio

3

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 ?

    
por Jan 14.02.2014 / 17:44

4 respostas

1

Esse regex funciona em vez disso?

'[git - (. *)]'

    
por 14.02.2014 / 18:34
1

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.

por 16.03.2016 / 06:30
0

Você precisa escapar duas vezes, para que \[git-.*\] se torne \[git-.*\]

    
por 23.02.2015 / 02:32
0

Pode ser um pouco tarde agora, mas descobri que precisava especificar pastas com pontos em vez de barras: por exemplo. 'fileinto' Test.default "'.

    
por 04.05.2016 / 23:53