3

sieveで正規表現を作成しようとしています。私が使用しているふるいの実装はDovecot Pigeonholeです

私は github プロジェクトの更新を購読しており、次のような形式の件名で github から電子メールを受け取ります。

Re: [Opserver] 例外の詳細ページから Jira に課題を作成する (#77)

件名に含まれる角括弧内のプロジェクト名があります。私のふるいスクリプトの関連部分は次のとおりです。

if address "From" "notifications@github.com" {
  if header :regex "subject" "\\[(.*)\\]" {
      set :lower :upperfirst "repository" "${1}";
      fileinto :create "Subscribtions.GitHub.${repository}"; stop;
  } else {
      fileinto :create "Subscribtions.GitHub"; stop;
  }
}

上記からわかるように、メッセージを適切なプロジェクト IMAP フォルダーに移動しています。したがって、上記の件名のメッセージは最終的にSubscribtions.Github.Opserver

残念ながら、このスクリプトには小さな問題が 1 つあります。誰かが github の問題のタイトルに角かっこを追加すると、フィルターが壊れます。たとえば、件名が次の場合:

[プロジェクト] [見てください] - 非常に奇妙な問題

上記のフィルターはメッセージをSubscribtions.Github.Project] [please look at it完全に望ましくないフォルダーに移動します。Subscribtions.Github.Projectとにかく移転してほしい。

これは、デフォルトで正規表現が貪欲であるために発生します。したがって、それらは可能な限り長い一致に一致します。しかし、私がそれを修正しようとすると、何も変更"\\[(.*)\\]"しない通常の方法が変わる"\\[(.*?)\\]"ようです。

この正規表現が期待どおりに動作するようにするにはどうすればよいですか?

4

1 に答える 1