正则表达式 - 在第一次匹配之前删除所有内容

布雷克韦尔

真的很挣扎这个。我需要一个正则表达式来从电子邮件中删除主题/收件人/发件人/日期字段,但将所有以前的主题/收件人/发件人/日期字段条目保留在邮件链中。例如:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在正则表达式中给定单词的第一次匹配之前删除所有内容?

来自分类Dev

仅在第一次出现之前获得正则表达式匹配结果

来自分类Dev

正则表达式匹配第一次出现以及直到最后一场比赛之间的所有内容

来自分类Dev

用于匹配所有内容的正则表达式,直到第一次出现 Golang 风格的字符串

来自分类Dev

正则表达式匹配所有内容,直到最后一次出现/

来自分类Dev

正则表达式匹配所有内容,直到最后一次出现/

来自分类Dev

正则表达式第一次出现在单词之前

来自分类Dev

正则表达式:匹配以某些字符开头的单词的第一次出现

来自分类Dev

正则表达式:匹配第一次出现的:

来自分类Dev

正则表达式匹配正则表达式模式之外的所有内容

来自分类Dev

正则表达式仅匹配一次

来自分类Dev

使正则表达式匹配一次

来自分类Dev

正则表达式仅匹配一次

来自分类Dev

表达式不匹配正则表达式

来自分类Dev

正则表达式匹配纠结的表达式

来自分类Dev

使用正则表达式匹配表达式

来自分类Dev

正则表达式匹配多个表达式?

来自分类Dev

正则表达式 URL 表达式匹配

来自分类Dev

正则表达式之前或之后

来自分类Dev

正则表达式javascript之前

来自分类Dev

MSVC正则表达式匹配

来自分类Dev

正则表达式匹配-Javascript

来自分类Dev

部分正则表达式匹配

来自分类Dev

正则表达式或不匹配

来自分类Dev

正则表达式匹配行尾

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式以匹配符号&-。'

来自分类Dev

Java正则表达式匹配

来自分类Dev

正则表达式以匹配位数