Lua:从邮件标题中删除字段

时间:2017-03-16 15:29:39

标签: string lua lua-patterns

我想从lua中的邮件标题中删除一些字段。假设我有一个名为" header"的字符串。我想删除以" Re"。

开头的所有标题字段

我该怎么做?

我试过这样的事情:

string.gsub(header ,"\nRe.-\n[^%s]", "")

但它不起作用....

例如输入

Received: by a;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
X-Received: by b;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Return-Path: <x@example.com>
Received: from ex.com 
        by mx..com 
        for x
Received-SPF: pas5a;
Authentication-Results:;
       dkim=pass header.i=@;
Return-Path: <bounce-paypal.de>
MIME-Version: 1.0
Reply-To: a
Subject: b
From: c
To: xxx
Date: Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Content-Type: multipart/alternative;

应该成为

X-Received: by b;
        Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Authentication-Results:;
       dkim=pass header.i=@;
MIME-Version: 1.0
Subject: b
From: c
To: xxx
Date: Tue, 14 Mar 2012 19:43:29 -0700 (PDT)
Content-Type: multipart/alternative;

删除以&#34; Re&#34;开头的字段。主要问题是多行字段。

2 个答案:

答案 0 :(得分:1)

尝试

string.gsub(header ,"%f[^\n%z]Re.-\n%f[%S]", "")

答案 1 :(得分:0)

如果问题是多行字段,请先将这些字段合并到带有

的单行字段中
header = string.gsub(header ,"\n( +)", "\1%1")

进行所需的编辑。完成后,根据需要恢复多行字段:

header = string.gsub(header ,"\1", "\n")

\1只是一个占位符。您可以使用邮件标题中未使用的任何字符。