我正在嘗試在sieve中創建regular expression。我使用的分子篩的實現是Dovecot Pigeonhole如何匹配第一對方括號內的所有內容
我訂閱的github項目更新,我收到從GitHub電子郵件與看起來像這樣格式的主題:
回覆:[Opserver ]從異常詳細信息頁面(#77)創建Jira上的問題
在主題行中包含方括號中的項目名稱。這裏是我的篩腳本的相關部分:
if address "From" "[email protected]" {
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
不幸的是,這個腳本存在一個小問題。如果有人在他們的github問題的標題中添加方括號,則過濾器會中斷。例如,如果主題是:
[項目] [請看看吧] - 很奇怪的問題
上述過濾器將郵件移動到文件夾Subscribtions.Github.Project] [please look at it
這是完全不可取的。無論如何,我希望它被移動到Subscribtions.Github.Project
。
發生這種情況是因爲默認情況下正則表達式是貪婪的。所以他們匹配最長的匹配。但是,當我試圖修復它通常的方式改變"\\[(.*)\\]"
到"\\[(.*?)\\]"
似乎沒有任何改變。
我該如何編寫這個正則表達式,以便它按照需要行事?