需要通过正则表达式删除电子邮件历史记录

Need to Delete Email History Via Regular Expression

我有一大堆包含旧电子邮件的文本文件。我需要删除每封主要电子邮件之后的历史记录。

例如...我有这样的行:

  > Some random text

还有这个..

  >>> More random text

我正在尝试创建一个匹配这些行的正则表达式,以便删除它们。我想到的第一个是这样的:

\s+>+.+\n

这几乎可以解决问题。它失败的地方是当我遇到以下情况时。

  > Text...
  >
  >  More random text. 

它匹配所有的第一行和所有的第三行。奇怪的是......它在第二行的 > 之后匹配。

这意味着我在整个文件中有一堆随机的“>”字符。

所以我尝试了这个:

\s*>*.*\n

完全匹配文档中的每一行。最后我只剩下一个空文件。

我做错了什么?我怎样才能做到这一点?在此先感谢您的帮助! :)

我建议您像下面这样更改您的正则表达式。

[ \t]*>+.*\n

DEMO

这对我有用:^\s*>+.*?(\n|$)

你可以看一个例子here

你的做法是正确的

\s+>+.+\n                          //almost correct 

这几乎成功了,但未能匹配以下内容:

  >  

因为>.+要求在>

之后至少有一个字符

因此,将您的 .+(一个或多个)更改为 .*(零个或多个),它将起作用。

\s+>+.*\n                           //working

\s*>*.*\n 这失败了,因为 * 意味着零个或多个..它包含所有 nothing 个实例

编辑:您还可以删除 \n 以获得更好的替换,即使用 \s+>+.*.

HTH