我正在尝试找出 Ruby 1.8.7 上的正则表达式,用于从电子邮件中删除线程。为此,我需要删除与线程模式匹配的邮件边界之间的所有内容,例如,在 Mac Mail 上,我需要删除粗体文本(示例 HTML 已简化以避免使用大量空间,真实邮件的 HTML远没有那么简洁):
发件人:XXXX ...邮件标题... 内容类型:多部分/替代; 边界="苹果邮件=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036" ...更多邮件标题... --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036 内容传输编码:quoted-printable 内容类型:文本/纯文本; charset=us-ascii 从 Mac Mail 添加的新评论 2012 年 6 月 12 日 12:51,XXXX@example.com 写道: > 线程 > 正文 > 成为 > 删除 >=20 --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036 内容传输编码:quoted-printable 内容类型:文本/html; charset=us-ascii <html>...很多HTML... <span>2012 年 6 月 12 日 12:51,XXXX@example.com 写道:</span> <span> 线程</span> <span> 文本 </span> <span> 是 </span> <span> 已移除 </span> <span>=20 </span> </html>= --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036--
我认为可以捕获所需文本的正则表达式是:
--Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036.+?(\bOn.+?)(?!--Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036)
但这在第一个"On"之前从边界捕获是行不通的。