Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения 
:(
    Опции темы
kukich
Дата 15.2.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 2.12.2009

Репутация: нет
Всего: нет



С помощью LWP достаю страничку , надо выделить 
Код

<title>то что надо выделить </title>.

Вот этим рег. выражением я выделяю эту строку 
Код

$str=~m/(<title>)(.+)(?=<\/title>)/;

Где в $str забит код страницы и при этом все работает.
Но в случае если на странице титл размещён таким образом
Код

<title>
    
        Здесь то , что надо выделить
    
</title>

то ничего не выделяется.Почему это?



Это сообщение отредактировал(а) kukich - 15.2.2010, 15:46
PM MAIL   Вверх
Logo
Дата 15.2.2010, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Модификатор s
PM MAIL   Вверх
kukich
Дата 15.2.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 2.12.2009

Репутация: нет
Всего: нет



Елси я не ошибаюсь , то модификатор S используется для замены , а M - для поиска.Мне не нужно заменять

Это сообщение отредактировал(а) kukich - 15.2.2010, 16:41
PM MAIL   Вверх
amg
Дата 15.2.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(kukich @  15.2.2010,  16:33 Найти цитируемый пост)
С модификатором S даж не компилиться
Не S, а s.
Код
if ($str=~/<title>(.+?)<\/title>/s) {
  # В $1 будет нужное
}

PM MAIL   Вверх
kukich
Дата 15.2.2010, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 2.12.2009

Репутация: нет
Всего: нет



виноват , все работает

Это сообщение отредактировал(а) kukich - 15.2.2010, 17:12
PM MAIL   Вверх
okanatov
Дата 15.2.2010, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.2.2010

Репутация: нет
Всего: нет



Немного запоздал с ответом, но всё же мои 5 копеекsmile

Первый вариант (без модификатора s) не работает, так как в этом случае метасимвол '.' не будет матчить '\n'.
PM MAIL   Вверх
krypt3r
Дата 16.2.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



Код

$str =~ /(?<=<title>)\s*(.+?)\s*(?=<\/title>)/s;

PM MAIL   Вверх
mvsgt
Дата 16.2.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Для фрагмента ниже все вышеперечисленные выражения не дадут результата.
Код

<html>
<head>
<title>title title title title 
</head>
<body>
body body body body body body 
</body>
</html>


а этот вариант даст:
Код

$html =~ /(<title\s*>)\s*([^<]+?)\s*(<\/)/s;


вопрос - на что лучше не обращать внимание, на использование дополнительных тэгов в title, или на отсутствие </title> ?

Это сообщение отредактировал(а) mvsgt - 16.2.2010, 13:21
PM MAIL   Вверх
JackYF
Дата 16.2.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



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


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
mvsgt
Дата 16.2.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Цитата(JackYF @  16.2.2010,  13:25 Найти цитируемый пост)
Возможно, лучше не парсить html регулярками, а воспользоваться готовыми модулями для этого? 


Как показывает практика, некоторые редиски делают непарсабельный html, так что приходится регулярками. И скорость часто настолько выше, что вопросов даже не возникает.
PM MAIL   Вверх
KSURi
Дата 16.2.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(mvsgt @  16.2.2010,  13:42 Найти цитируемый пост)
Как показывает практика, некоторые редиски делают непарсабельный html, так что приходится регулярками

Marpa::UrHTML


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.