我有以下筛选脚本:
require ["enotify","body","regex","imap4flags","variables"];
if header :is "subject" "Sie haben eine Zahlung erhalten"
{
if body :regex "Sie haben ([0-9,]+(\\.\\d{2})?) € EUR erhalten" {
notify :importance "2" :message "Sie haben ${1} EUR erhalten" "mailto:[email protected]";
setflag "\\Seen";
}
}
但是
${1}
没有填充我的正则表达式
还尝试首先将
${1}
设置为定义的变量,也不起作用。
我做错了什么?
通知程序本身正在工作,我收到一封邮件,但没有值。
我想从正文中提取金额:
Sie haben 15,00 € EUR erhalten
所以我的正则表达式应该给我
15,00
。
我不知道为什么,但是带有
body
的 :regex
扩展无法捕获正则表达式组,但您仍然可以使用 foreverypart
和 extracttext
将正文内容分配给变量,以便 string :regex
可以捕获它们.
Dovecot Pigeonhole Sieve 的正则表达式非常有限,你不能使用像
\d
这样的东西。
require ["enotify","regex","imap4flags","variables","foreverypart","extracttext"];
if header :is "subject" "Sie haben eine Zahlung erhalten"
{
foreverypart {
extracttext "body";
if string :regex "${body}" "Sie haben ([0-9,]+(\\.[0-9]{2})?) € EUR erhalten" {
notify :importance "2" :message "Sie haben ${1} EUR erhalten" "mailto:[email protected]";
setflag "\\Seen";
break;
}
}
}