Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > надо выдрать два места из страницы


Автор: совсемначинающий 25.6.2010, 12:09
скачиваю страничку и надо выдрать два места из нее по шаблону

...........
<div style="line-height: 160%; margin-bottom: 7px;">
НУЖНЫЙ КУСОК 1
</div>
НЕНУЖНЫЙ ТЕКСТ
<div style="margin-left: 4px;">
НУЖНЫЙ КУСОК 2
</div>
............


$description = `/usr/bin/wget -q -O - $urls{$i}`;
$description =~ /<div style="line-height: 160%; margin-bottom: 7px;">(.*?)<\/div>(.*?)<div style="margin-left: 4px;">(.*?)<\/div>/;
$description = $1.<br>.$3;


выдает пустоту как ни изгаляюсь...

Автор: ginnie 25.6.2010, 13:53
совсемначинающий, пропробуйте использовать два регулярных выражения, вместо одного (отдельный для каждого нужного фрагмента) и добавить в регулярное выражение модификатор s, чтобы . переводы строк тоже захватывала.

Автор: совсемначинающий 25.6.2010, 14:30
а как правильно работать с кавычками?...  похоже из-за них дело...

Автор: ginnie 25.6.2010, 14:53
совсемначинающий, маловероятно, что дело в кавычках. Привидите пример текста, где не работает регулярное выражение и само регулярное выражение, посмотрим в чем дело.

Автор: совсемначинающий 25.6.2010, 15:26
так выкусывает с начала 7px до </div>

$description =~ /7px;(.*?)<\/div>/s;
$description = $1;


так выдает пустоту

$description =~ /7px;\"(.*?)<\/div>/s;
$description = $1;

или 

$description =~ /7px;"(.*?)<\/div>/s;
$description = $1;



текст скачиваемый


<div style="line-height:60%;margin-top:7px;margin-bottom:7px">

полезный текст

</div>
  
 <div style="margin-left:4px;">Дополнительная информация: <font class="dop">нет</font></div>

полезный текст 2
 
</div></p>



Автор: ginnie 25.6.2010, 15:39
совсемначинающий, ткните пальцем, где у Вас в тексте есть 7px;"?

Автор: совсемначинающий 25.6.2010, 16:17
мда... спасибо огромное

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)