首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“接收:由”电子邮件标题中匹配时间的RegEx

在“接收:由”电子邮件标题中匹配时间的RegEx
EN

Stack Overflow用户
提问于 2012-05-21 17:34:36
回答 2查看 1.7K关注 0票数 1

在我的网站所在的共享主机上,我有一个电子邮件转发器,它以短信的形式向我的手机发送信息。然而,最近,它变得有点失控。

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

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

代码语言:javascript
复制
Received: by 99.99.99.99 with SMTP id XyXyXyXyXyXyXy;
        Tue, 15 May 2012 01:22:33

..。这就是我希望它能运作的方式:

代码语言:javascript
复制
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之间),该消息将被发送到我的电话,否则它将什么也不做。(当然,这与RegEx本身无关。)

我是一个相当正规的表达式n00b,但是我设计了以下(不工作) RegEx,并且不知道我离它有多近或有多远:

代码语言:javascript
复制
\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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-21 18:05:56

Eugene regex的修正版本;

代码语言:javascript
复制
/\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的时间,但我假设您不会看到这些。

票数 2
EN

Stack Overflow用户

发布于 2012-05-21 17:57:55

修正了你使用http://gskinner.com/RegExr/工作的问题,但仍然不太理想。告诉我你是否想进一步研究这个问题。

代码语言:javascript
复制
\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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10689862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档