Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式与“中的时间”匹配;收到:通过;电子邮件头_Regex_Perl_Email_Time_Email Headers - Fatal编程技术网

Regex 正则表达式与“中的时间”匹配;收到:通过;电子邮件头

Regex 正则表达式与“中的时间”匹配;收到:通过;电子邮件头,regex,perl,email,time,email-headers,Regex,Perl,Email,Time,Email Headers,在我的网站所在的共享主机上,我有一个电子邮件转发器,它以文本消息的形式向我的手机发送消息。然而,最近情况有点失控了 我希望,使用cPanel中的“用户级过滤”,我可以设置一个基于RegEx的过滤器,只在07:00:00到22:00:00之间将电子邮件转发到我的手机 此筛选器将匹配以下电子邮件头,通常在邮件源中出现2-3行: Received: by 99.99.99.99 with SMTP id XyXyXyXyXyXyXy; Tue, 15 May 2012 01:22:33

在我的网站所在的共享主机上,我有一个电子邮件转发器,它以文本消息的形式向我的手机发送消息。然而,最近情况有点失控了

我希望,使用cPanel中的“用户级过滤”,我可以设置一个基于RegEx的过滤器,只在07:00:00到22:00:00之间将电子邮件转发到我的手机

此筛选器将匹配以下电子邮件头,通常在邮件源中出现2-3行:

Received: by 99.99.99.99 with SMTP id XyXyXyXyXyXyXy;
        Tue, 15 May 2012 01:22:33
。。。这就是我希望它能起作用的方式:

Received: by (ANY IP) with (ANYTHING) id (ANYTHING);
        (Sun|Mon|Tue|Wed|Thu|Fri|Sat), (ANY DATE/MONTH/YEAR) (RegEx magic to match time?)
当匹配成功时(例如,如果时间介于07:00:00和22:00:00之间),消息将发送到我的手机,否则它将不起任何作用。(当然,这与正则表达式本身无关。)

我相当喜欢正则表达式n00b,但设计了以下(非工作)正则表达式,不知道离它工作有多远:

\bReceived: by (.*) with [a-Z] id (.*)(Sun|Mon|Tue|Weds|Thu|Fri|Sat),(.*)[0-2][2-7]:[0-2][0-9]:[0-2][0-9]\bsi

有什么想法、建议或创造性的解决方案吗?我的托管服务告诉我,cPanel中的RegEx需要采用PERL格式。

已修复,您可以使用,但基本上仍不太理想。告诉我你是否想更进一步

\bReceived: by (.*) with \w+ id (.*);\s*(Sun|Mon|Tue|Weds|Thu|Fri|Sat),\s*(\d+\s+\w+\s+\d+)\s+[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\b

修正了你的工作使用,仍然在很大程度上是次优。告诉我你是否想更进一步

\bReceived: by (.*) with \w+ id (.*);\s*(Sun|Mon|Tue|Weds|Thu|Fri|Sat),\s*(\d+\s+\w+\s+\d+)\s+[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\b

尤金正则表达式的修订版本

/\bReceived: by .*?;\s*(?:Sun|Mon|Tue|Weds|Thu|Fri|Sat),\s*\d+\s+\w+\s+\d+\s+(?:0[789]|1\d|2[01]):\d\d:\d\d\b/

此版本使用非捕获分组,并将可接受的时间限制为07:00:00至21:59:59。它假设时间格式是有效的——理论上它将经过10:99:99的时间,但我假设你不会看到这些

/\bReceived: by .*?;\s*(?:Sun|Mon|Tue|Weds|Thu|Fri|Sat),\s*\d+\s+\w+\s+\d+\s+(?:0[789]|1\d|2[01]):\d\d:\d\d\b/

此版本使用非捕获分组,并将可接受的时间限制为07:00:00至21:59:59。它假设时间格式是有效的-理论上它将经过10:99:99的时间,但我假设您不会看到这些时间。

我必须修改此格式以便与cPanel一起使用,如下所示<代码>已收到:**\s*(?:Sun | Mon | Tue | Weds | Thu | Fri | Sat),\s*\d+\s+\s+\d+\s+(?:0[789]| 1\d | 2[01]):\d\d:\d\d。。。但事实上,这正是我所需要的,而且很有魅力!非常感谢你的帮助!我必须修改这个,以便与cPanel一起使用,如下所示<代码>已收到:**\s*(?:Sun | Mon | Tue | Weds | Thu | Fri | Sat),\s*\d+\s+\s+\d+\s+(?:0[789]| 1\d | 2[01]):\d\d:\d\d。。。但事实上,这正是我所需要的,而且很有魅力!非常感谢你的帮助!