筛选:使用正则表达式过滤主题,并将文件放入名为 match 的邮箱中

筛选:使用正则表达式过滤主题,并将文件放入名为 match 的邮箱中

我正在尝试用正则表达式按主题过滤邮件。

我想要匹配的主题被读作像我想要检查的字符串在[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”'。

相关内容