web-dev-qa-db-ja.com

ふるい:正規表現でサブジェクトをフィルタリングし、matchという名前のメールボックスにファイルします

正規表現を使用して件名でメールをフィルタリングしようとしています。

照合したい件名は[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に正しくファイルするにはどうすればよいですか?

3
Jan

キャプチャグループとダブルバックラッシュの両方を組み合わせる必要があります。両方とも以前の回答で言及されていましたが、別々に言及されていました。

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

説明:

  • :matchesとは異なり、:regexは、キャプチャグループの一致変数($ 1など)のみを設定します。 :matchesワイルドカードごとに設定します。

  • :regex実際には[]をエスケープする必要がありますが、円記号は2つ付いています。

1
Dato

この正規表現は代わりに機能しますか?

'[ギット-(。*)]'

1
alxgomz

\[git-.*\]\\[git-.*\\]になるように、2回エスケープする必要があります

0
Andrew Savinykh

今は少し遅れるかもしれませんが、スラッシュの代わりにドットでフォルダを指定する必要があることがわかりました。 'fileinto "Test.default"'。

0