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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь с регуляркой, поиск данных между определённых тегов 
:(
    Опции темы
Buhalich
Дата 20.11.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте. Имеется код:
Код

$content = $response->content;
$content =~/<title>\W+<\/title>/img;
$title = $&;

В переменной $content - хранится контент веб страницы.
Я пытаюсь получить в переменную $title - текст от тега <title> до </title>. Тот код что я привёл работает, но почему-то через раз.
Подскажите как правильно составить эту регулярку чтобы она работала всегда smile

И ещё, как получить текст находящийся между заведомо известными границами?
  
PM MAIL   Вверх
amg
Дата 20.11.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Попробуй 
Код

$content =~ /<title>.*?<\/title>/is;


Добавлено @ 16:03 
Цитата(Buhalich @  20.11.2006,  12:55 Найти цитируемый пост)
И ещё, как получить текст находящийся между заведомо известными границами?
Если границы представляют собой отдельные строки файла, то поможет оператор .. (две точки).


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


Новичок



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

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



Цитата(amg @  20.11.2006,  15:51 Найти цитируемый пост)
Попробуй 

Спасибо. Заработало smile

Цитата(amg @  20.11.2006,  15:51 Найти цитируемый пост)
Если границы представляют собой отдельные строки файла

В моём случае границами являются различные теги.
PM MAIL   Вверх
JUmPER
Дата 20.11.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



если надо много страний за раз, то такое лучше...
Код

$content =~ /<title>.*?<\/title>/iso;

--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
arto
Дата 20.11.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а o зачем?
PM MAIL ICQ   Вверх
amg
Дата 21.11.2006, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(arto @  20.11.2006,  19:03 Найти цитируемый пост)
а o зачем?
У меня тот же вопрос. (Насколько я знаю, опция /o поможет, если в регулярном выражении есть переменная, в этом случае она подставляется лишь однажды, при компиляции).

PM MAIL   Вверх
JUmPER
Дата 21.11.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



упс, всем сорри просто вчера тупил т.к. не выспался smile 
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
amg
Дата 21.11.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



В данном случае /o и не помешает: и с ней, и без нее при трансляции получается одно и то же:
Код

print qr/<title>.*?<\/title>/is, "\n";
print qr/<title>.*?<\/title>/iso, "\n";
Код

(?si-xm:<title>.*?</title>)
(?si-xm:<title>.*?</title>)

PM MAIL   Вверх
amg
Дата 21.11.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

/<title>.*?<\/title>/is
/(?si-xm:<title>.*?<\/title>)/


Это сообщение отредактировал(а) amg - 21.11.2006, 11:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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