真的很挣扎这个。我需要一个正则表达式来从电子邮件中删除主题/收件人/发件人/日期字段,但将所有以前的主题/收件人/发件人/日期字段条目保留在邮件链中。例如:
Subject: RE: Test mail
From: [email protected]
To: [email protected]
Date: 22/06/2018 10:00:00
This is the body of e-mail #3.
Subject: RE: Test mail
From: [email protected]
To: [email protected]
Date: 22/06/2018 09:55:00
This is the body of e-mail #2.
Subject: Test mail
From: [email protected]
To: [email protected]
Date: 22/06/2018 09:50:00
This is the body of e-mail #1.
我希望正则表达式简单地删除前五行给出:
This is the body of e-mail #3.
Subject: RE: Test mail
From: [email protected]
To: [email protected]
Date: 22/06/2018 09:55:00
This is the body of e-mail #2.
Subject: Test mail
From: [email protected]
To: [email protected]
Date: 22/06/2018 09:50:00
This is the body of e-mail #1.
不幸的是,我不能写任何专门删除前五行的东西,因为可能还有一个 CC 字段;这意味着它可能是六行。
因此,它需要匹配 "Date:" 的第一个实例,直到行尾并删除之前的所有内容。任何想法将不胜感激;我得到的最接近的是下面的,不幸的是它匹配了“Date:”的两个实例。
[\s\S]*.*Date:.*[\s\S]
要匹配文本的第一部分直到Date:
并选择该行,您可能会使用:
^Subject:[\s\S]+?^Date:[^\r\n]+\s*
解释
^
从行开始Subject:
字面匹配[\s\S]+?
匹配一个空白字符或非空白字符一次或多次非贪婪^Date:
匹配行的开头,后跟 Date:
[^\r\n]+
一次或多次不匹配换行符的回车\s*
匹配一个空白字符零次或多次请注意,在示例中,全局标志关闭以仅选择单个匹配项。
使用的替代方法[\s\S]+?
可能是使用修饰符 (?s)
让点匹配所有字符,包括换行符。
(?s)^Subject:.+?^Date:[^\r\n]+\s*
然后,您可以例如用空字符串替换匹配项或捕获(第一个)捕获组中的其余部分:
^Subject:[\s\S]+?^Date:[^\r\n]+\s*([\s\S]+)
(如果您使用 pcre,则可以使用而不是捕获组\K[\s\S]+
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句