正则表达式 – 先从 The Bat! 的回复模板说起

The Bat! 是 LT 一直在使用的邮件客户端软件。前几日,写邮件咨询一外国网友,注意到对方回复邮件,使用的是 Gmail 网页版。在引用原邮件时,Gmail 会很贴心地标明原邮件在当地时区的时间。

比如,我(发件人)给对方写的邮件 A (为了不致混淆邮件,下面我给所有邮件标上 A、 B、 C、 D 的标识)的时间(来源于邮件头)是:

Date: Wed, 9 Jul 2014 16:42:16 +0800

对方(收件人)回复时,引用原邮件,Gmail 在回复 A 的正文 B 中会标明时区和时间:

2014-07-09 10:42 GMT+02:00 Tao :

我一收到邮件 B ,哦,知道了我发邮件 A 时,对方当地是什么时区,是什么时间。这是一项多么体贴人的功能啊!想一想在全球范围内通信,时区是一个很重要的参考标识。可是 The Bat! 的默认回复模板只能标明原邮件的当地时间。缺少了时区!没有了时区的时间,是没有意义的!比如,对方(发件人)给我写的邮件 C 的时间(来源于邮件头)是:

Date: Wed, 9 Jul 2014 15:53:28 +0200

我 (收件人)用 The Bat! 回复时,在邮件 D 中引用原邮件,The Bat! 是这样的:

Wednesday, July 9, 2014, 9:53:28 PM, you wrote:

根据时差换算,原邮件 C 的时间,在我的时区 +8000 ,就是 21:53:28。但是没有标明时区。发件人收到我的回复邮件 D 时,看到 9:53:29PM,会想这是哪个地方( 时区 )的时间呢?

于是,我也想让 The Bat! 把时区功能标出来!可是没有找到相关的 macro 宏参数,直到在一个旮旯里找到一个 FAQ (link),才知道可以用正则表达式来做这件事!

先看原 The Bat! 的回复模板 ( Templates ),是这样的:

Hello %OFromFName,

%ODateEn, %OTimeLongEn, you wrote:

%Quotes
%Cursor

--
Best regards,
%FromFName                            mailto:%FromAddr

改用正则表达式,提取时区:

Hello %OFromFName,

%SETPATTREGEXP="(?m-s)Date\:\s*?((.*?[\d]{4})\s*?%-
([\d]{0,2}\:[\d]{0,2}\:[\d]{0,2})\s*?(.*))"%-
%REGEXPBLINDMATCH="%HEADERS" On %ODATEEN at %-
%SUBPATT="3" GMT%SUBPATT="4" %-
( which was %OTIME where I live ) you wrote:

%Quotes
%Cursor

--
Best regards,
%FROMNAME                            mailto:%FromAddr

于是,对方收到的回复邮件 D 时,就变成这样子:

On Wednesday, July 9, 2014 at 15:53:28 GMT +0200 ( which was 21:53 where I live ) you wrote:

哦,这样一来,就可以让原发件人很清晰地知道原来他写邮件 C 时在我这边是什么时间啦。怎么样?正则表达时功能貌似很强大哦!

扩展阅读:

关键字:The Bat!, 正则, 时区, 模板

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.