Как очистить, используя 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
Модификатор позволяет вашему шаблону искать все совпадения в строке.