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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбрать ссылки, Помогите написать регулярное выражение 
:(
    Опции темы
Mosaicolor
Дата 10.2.2014, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Понимаю, что задачка, наверное очень простая, но прошу не смеяться, а помочь.

Есть некий текст. В нем некоторое количество ссылок вида: <a title="bomba direccion" class="aprovechamiento_pieza_envehiculo" href="/detalle-pieza-1533414.html">bomba direccion</a>

Необходимо выбрать их все (но неизвестно, сколько их, от 0 до пары сотен)
и каждую представить в виде двух переменных: ссылка и анкор.

И хотелось бы обойтись без модуля-парсера. Использовать регулярное выражение.
PM MAIL   Вверх
Mosaicolor
Дата 10.2.2014, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Немного еще подумал...
Пожалуй, можно не 2 переменных, а одну - всю ссылку с анкором. 
Все равно они пишутся в БД, а разобрать их можно уже там, по-одной.

Основная сложность остается в том, что неизвестно, сколько ссылок.
 
Ссылки в итоге выбрал: s/href=(?:\"|\')?(.+?)(?:\"|\')(?:>|\s)/

Но они без анкоров. А нужны с анкорами. Подправьте, пожалуйста, регулярку.

Это сообщение отредактировал(а) Mosaicolor - 10.2.2014, 15:05
PM MAIL   Вверх
alezzz
Дата 11.2.2014, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Забыл я уже эти SEO-шные термины smile, что есть анкор? вобщем какую строку/строки в результате хотите получить?
PM MAIL   Вверх
Mosaicolor
Дата 11.2.2014, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, что откликнулись.

Из регулярного выражения, что я написал, я получаю только ссылку: /detalle-pieza-1533414.html

А нужна мне ссылка с анкором (текстом ссылки), вот такого вида: /detalle-pieza-1533414.html bomba direccion
PM MAIL   Вверх
alezzz
Дата 11.2.2014, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Цитата(Mosaicolor @  10.2.2014,  14:42 Найти цитируемый пост)
Ссылки в итоге выбрал: s/href=(?:\"|\')?(.+?)(?:\"|\')(?:>|\s)/

А вы еще и неправильно выбрали, так у вас вообще не должно было работать, или не дописали чего-то.

Код

my $href = '<a title="bomba direccion" class="aprovechamiento_pieza_envehiculo" href="/detalle-pieza-1533414.html">bomba direccion</a>';
if ($href =~ m#<a.+?href\s*=\s*["']([^"']+)["'][^>]*>([^<]+)<#){
    print "$1 - $2\n";
}

В большинстве случаев должно так работать, только проверку в while и модификатор g чтоб искал все ссылки. m## вместо стандартного // выбрал т.к. с тегами проще работать.

Это сообщение отредактировал(а) alezzz - 11.2.2014, 16:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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