正規表現を使用して件名でメールをフィルタリングしようとしています。
照合したい件名は[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}";
// ...
}
説明:
:matchesとは異なり、:regexは、キャプチャグループの一致変数($ 1など)のみを設定します。 :matchesワイルドカードごとに設定します。
:regex実際には[
と]
をエスケープする必要がありますが、円記号は2つ付いています。
この正規表現は代わりに機能しますか?
'[ギット-(。*)]'
\[git-.*\]
が\\[git-.*\\]
になるように、2回エスケープする必要があります
今は少し遅れるかもしれませんが、スラッシュの代わりにドットでフォルダを指定する必要があることがわかりました。 'fileinto "Test.default"'。