如何从Perl字符串中提取不同格式的时间?

时间:2010-10-13 18:13:17

标签: regex perl

我每天至少收到一次价格变动的电子邮件。我试图自动记录数据。我对正则表达式相当新,现在比5小时前更加困惑。

以下是一些要解析的示例行。请注意,时间格式并不总是相同:

Effective 00:01AM, 10/13/10, PRICES WILL BE AS FOLLOWS UNLESS OTHERWISE NOTED  
Effective 00:01 AM, 10/13/10, PRICES WILL BE AS FOLLOWS UNLESS OTHERWISE NOTED

希望在插入数据库之前将时间和日期输入变量以便稍后在脚本中进行操作。

2 个答案:

答案 0 :(得分:4)

use strict;
use Date::Parse;

for my $line (@lines) {
    if ($line =~ /Effective (.+?) PRICES/) {
        my ($sec, $min, $hr, $day, $mon, $year) = strptime($1);
        $mon += 1;
        $year += 2000;
        # now you can use $year, $mon, $day, $hr, $min
    }
}

答案 1 :(得分:1)

/(\d{2}:\d{2}[A-Z]{2}), (\d{2}\/\d{2}\/\d{2})/

从您发布的示例行中捕获00:01AM10/13/10