我正在尝试用正则表达式按主题过滤邮件。
我想要匹配的主题被读作像我想要检查的字符串在[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
?
答案1
您需要结合使用捕获组和双反冲。 前面的答案中都提到过,但分别提到过。
if header :regex "subject" "^\\[git-(.*)\\]" {
set :lower :upperfirst "repository" "${1}";
// ...
}
解释:
不像:火柴,:正则表达式仅为捕获组设置匹配变量($1 等)。:火柴为每个通配符设置它们。
:正则表达式确实需要转义
[
和]
,但带有双反斜杠。
答案2
这个正则表达式能起作用吗?
'[git-(.*)]'
答案3
你需要逃脱两次,所以这就\[git-.*\]
变成了\\[git-.*\\]
答案4
现在可能有点晚了,但我发现我必须用点而不是斜线来指定文件夹:例如'fileinto“Test.default”'。