0

我是一个绝对的正则表达式菜鸟,并且一直在努力尝试编写一个正则表达式来从如下所示的字符串中删除电子邮件签名:

Hi There, this is an email.

Warm Regards,

Joe Bloggs

到目前为止,我已经尝试了以下变化:

/^[\w |][R|r]egards,/

正则表达式应该:

  1. 看看行的开头(我的目标是^,
  2. 涵盖变体,例如“Warm Regards”、“Kind Regards”、“Best Regards”和普通的“Regards”(我希望通过[\w |]匹配任何单词或空白以及[R|r]覆盖 Regards/regards 来完成),
  3. 可以使用“热情的问候”或“温暖的问候”等混合大小写,并且
  4. [word] Regards仅接收或仅接收行regards,这样我们就不会抓取其中某处带有“问候”一词的电子邮件正文。

这似乎很简单,但我无法确定它,而且我似乎错误地扩大了我的正则表达式,以至于任何包含“问候”的行都会被拾取。如果这很重要,我会在 Node.js 中结合string.search函数执行此操作。

4

4 回答 4

2

这似乎符合您的所有要求:

^(\w*\s)?[r|R]egards,?

必须从新行开始,然后可以有任何单词,后跟空格,单词“arees”,或者只是“arees”,逗号也是可选的。

如果您还想清除问候行之后的所有内容,您可以添加\s*.*

^(\w*\s)?[r|R]egards,?\s*.*
于 2013-02-01T21:03:46.773 回答
1

如果您试图从Warm Regards线上删除所有内容,则应该这样做

^[^<]*?(?=(.*)[R|r]egards)

于 2013-02-01T21:04:59.307 回答
1

试试下面的正则表达式

^\w* ?regards,?

指定了不区分大小写和全局标志。

您可以在此处查看正则表达式说明及其匹配内容:http ://regex101.com/r/vR3zG5

于 2013-02-01T21:05:08.743 回答
1

匹配#1-#4 中定义的签名的正则表达式如下:

/^(\w+ +)?regards,? *$/im

这个怎么运作:

  • 开头的“^”表示换行
  • “(\w++)?” 表示仅包含一个单词后跟至少一个空格的可选段
  • “问候”只是一个简单的匹配
  • “,?” 末尾的可选逗号
  • “ *” - 该行可能包含尾随空格(在 ^ 之后放置相同的匹配项可能很有用)
  • "$" - 行尾
  • /.../i - 表示表达式不区分大小写
  • /.../m - 表示 ^ 和 $ 在换行符处匹配
于 2013-02-01T21:21:55.207 回答