Как очистить, используя LWP и регулярное выражение, аргумент даты для функции javascript?

У меня возникают трудности при очистке дат с определенной веб-страницы, потому что дата, по-видимому, является аргументом, переданным в функцию javascript. В прошлом я написал несколько простых скребков без каких-либо серьезных проблем, поэтому я не ожидал проблем, но я борюсь с этим. На странице есть 5-6 дат в обычном формате гггг / мм / дд, как этот формат даты ('2012/02/07')

В идеале я хотел бы удалить все, кроме полдюжины дат, которые я хочу сохранить в массиве. На данный момент, я не могу даже успешно получить одно свидание, не говоря уже о всех. Возможно, это просто искаженное регулярное выражение, которое я искал так долго, что больше не могу его разглядеть.

Q1. Почему я не получаю совпадение с регулярным выражением ниже?

Q2. Исходя из вышеизложенного вопроса, как я могу собрать все даты в массив? Я думал о том, чтобы принять x количество дат на странице, зациклить x раз и назначить захваченную группу для массива в каждом цикле, но это кажется довольно неуклюжим.

Код проблемы следует.

#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use HTML::Tree;

my $url_full = "http://www.tse.or.jp/english/market/STATISTICS/e06_past.html";
my $content = get($url_full);
#dateFormat('2012/02/07');
$content =~ s/.*dateFormat\('(\d{4}\/\d{2}\/\d{2}\s{2})'\);.*/$1/; # get any date without regard to greediness etc

1 ответ

Решение

Почему в вашем шаблоне два пробельных символа?

$content =~ s/.*dateFormat\('(\d{4}\/\d{2}\/\d{2}\s{2})'\);.*/$1/;
                                                 ^^^^^

они не в вашем примере формата 'dateFormat('2012/02/07')'

Я бы сказал, что это причина, почему ваш шаблон не совпадает.

Запишите все даты

Вы можете просто получить все совпадения в массив, как это

( my @Result ) = $content =~ /(?<=dateFormat\(')\d{4}\/\d{2}\/\d{2}(?='\))/g;

(?<=dateFormat\(') является положительным взглядом за утверждением, которое гарантирует, что есть dateFormat\(' до вашего шаблона даты (но это не входит в ваш матч)

(?='\)) является положительным прогнозом, который гарантирует, что есть '\) после картины

g Модификатор позволяет вашему шаблону искать все совпадения в строке.

Другие вопросы по тегам