Sieve脚本正则捕获组${1}无法填充问题排查求助
Sieve脚本捕获组失效问题解决
你的问题出在正则表达式匹配逻辑不符合目标文本格式,导致捕获组根本没匹配到内容,所以${1}是空值。
具体问题点:
- 目标文本里的金额是
15,00,用逗号作为小数分隔符,但你的正则里写的是\\.(点),这会导致小数部分匹配失败,整个捕获组无法命中。 - 原正则的分组结构冗余,没必要嵌套小数分组,直接匹配符合格式的金额即可。
修正后的脚本:
require ["enotify","body","regex","imap4flags","variables"]; if header :is "subject" "Sie haben eine Zahlung erhalten" { if body :regex "Sie haben ([0-9]+,[0-9]{2}) € EUR erhalten" { notify :importance "2" :message "Sie haben ${1} EUR erhalten" "mailto:xxxx@xxxx.com"; setflag "\\Seen"; } }
如果要兼容整数金额(比如100 € EUR),可以调整正则为:
if body :regex "Sie haben ([0-9]+(,[0-9]{2})?) € EUR erhalten" { // 其他逻辑不变 }
这样就能正确捕获15,00或者100这类金额了。
内容的提问来源于stack exchange,提问作者Qhiliqq
相关产品推荐
相关产品推荐

