| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| мда... спасибо огромное |