正则表达式同时在/ ^ Subject和/ ^ From上

时间:2019-06-06 13:27:09

标签: regex

此正则表达式中的错误在哪里?对于主题字段和来自字段,我如何同时匹配两个条件?主题为“空行”(主题字段中未写任何内容),并且电子邮件来自“ assistant@mail.com”,然后接受邮件:

/^From:(.*)assistant\@gmail\.com|^Subject:\s*$/ OK

真的感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我对您的文本及其布局进行了假设。

这行吗?

/(From:\sassistant@gmail\.com)|(Subject:.*)$/

假设您要匹配的文本为一行,我会在一组中捕获电子邮件,或者在另一组中匹配空白主题。

查看比赛内容:https://regex101.com/r/CP0jfc/2/

答案 1 :(得分:0)

也许您会从中得到一些想法。

^From:\s*assistant\@gmail\.com|^Subject:\s*$

演示:: https://regex101.com/r/zDzbyX/1

答案 2 :(得分:0)

假设您有多行,一种选择可能是首先匹配From部分,然后匹配它们之间的0+行,然后匹配Subject部分。

反之,则可以改变逻辑模式。

^From:.*?assistant@gmail\.com.*(?:\n.*)*\nSubject:\s*$

这将匹配:

  • ^From:.*?从字符串开头匹配From:,后跟任何非char的
  • assistant@gmail\.com匹配电子邮件
  • .*匹配除换行符以外的任意字符0+次
  • (?:\n.*)匹配0+次换行符和整行,直到该行结束为止
  • \nSubject:\s*$匹配换行符Subject,0 +倍空白字符并断言行的结尾

Regen demo

另一种方式:

^Subject:\s*(?:\n.*)*\nFrom:.*?assistant@gmail\.com

Regex demo