Как я могу извлечь время различных форматов из строк Perl? - PullRequest
0 голосов
/ 13 октября 2010

Я получаю электронные письма не реже одного раза в день с изменениями цен.Я пытаюсь автоматизировать запись данных.Я довольно новичок в регулярных выражениях и теперь более запутан, чем 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 ]

4 голосов
/ 13 октября 2010
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 голос
/ 13 октября 2010
/(\d{2}:\d{2}[A-Z]{2}), (\d{2}\/\d{2}\/\d{2})/

Захватывает 00:01AM и 10/13/10 из строки примера, которую вы разместили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...