URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7994
[ Назад ]

Исходное сообщение
"Регулярные выражения"

Отправлено antiwindows , 22-Сен-15 17:34 
с помощью регулярных выражений надо вытащить из исходного кода название продукта. Это то что стоит в ковычках после слова title (т.е. "Leitz 24230095 Stehsammler, A4, Hartpappe, schwarz"):

<a class="a-link-normal s-access-detail-page  a-text-normal" title="Leitz 24230095 Stehsammler, A4, Hartpappe, schwarz" href="http://www.amazon.de/Leitz-24230095-Stehsammler-Hartpappe schwarz/dp/B0007OEHFS/ref=sr_1_1?ie=UTF8&qid=1442901446&sr=8-1&keywords=Leitz+24230095"><h2 class="a-size-medium a-color-null s-inline s-access-title a-text-normal">Leitz 24230095 Stehsammler, A4, Hartpappe, schwarz</h2></a>

Примерно выражение выглядит так:
<a class=\"[^\"]*title\"(.*?)</a>
Но это выражение не работает. Помогите кто может!


Содержание

Сообщения в этом обсуждении
"Регулярные выражения"
Отправлено Аноним , 22-Сен-15 19:45 
>[оверквотинг удален]
> то что стоит в ковычках после слова title (т.е. "Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz"):
> <a class="a-link-normal s-access-detail-page  a-text-normal" title="Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz" href="http://www.amazon.de/Leitz-24230095-Stehsammler-Hartpappe
> schwarz/dp/B0007OEHFS/ref=sr_1_1?ie=UTF8&qid=1442901446&sr=8-1&keywords=Leitz+24230095"><h2
> class="a-size-medium a-color-null s-inline s-access-title a-text-normal">Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz</h2></a>
> Примерно выражение выглядит так:
> <a class=\"[^\"]*title\"(.*?)</a>
> Но это выражение не работает. Помогите кто может!

/ title=\"(.+)\" href/
Это если после title всегда идёт href, конечно.


"Регулярные выражения"
Отправлено eRIC , 23-Сен-15 08:43 
> / title=\"(.+)\" href/
> Это если после title всегда идёт href, конечно.

проще будет / title=\"(.+)\" /

афтору https://regex101.com/ в помощь


"Регулярные выражения"
Отправлено Аноним , 23-Сен-15 11:30 
>> / title=\"(.+)\" href/
>> Это если после title всегда идёт href, конечно.
> проще будет / title=\"(.+)\" /
> афтору https://regex101.com/ в помощь

Не пойдёт, если регулярка "жадная" - см ниже.


"Регулярные выражения"
Отправлено Andrey Mitrofanov , 23-Сен-15 19:33 
>> проще будет / title=\"(.+)\" /
> Не пойдёт, если регулярка "жадная" - см ниже.

Как дети малые,

/title=\"([^\"]+)\"/


"Регулярные выражения"
Отправлено antiwindows , 24-Сен-15 12:00 
>>> проще будет / title=\"(.+)\" /
>> Не пойдёт, если регулярка "жадная" - см ниже.
> Как дети малые,
> /title=\"([^\"]+)\"/

Andrey Mitrofanov, благодарю! регулярка работает идеально!!!


"Регулярные выражения"
Отправлено antiwindows , 24-Сен-15 11:57 
>>> / title=\"(.+)\" href/
>>> Это если после title всегда идёт href, конечно.
>> проще будет / title=\"(.+)\" /
>> афтору https://regex101.com/ в помощь
> Не пойдёт, если регулярка "жадная" - см ниже.

работает, но действительно жадная ...очень-очень жадная )) Находит название и ссылку, но прихватывает ещё море мусора из исходника, который стоит после ссылки (не буду кодом засорять тему - пара страниц)


Аноним, благодарю за ссылку на regex101, потестю. Сейчас пользуюсь http://regexpal.com/


"Регулярные выражения"
Отправлено Аноним , 22-Сен-15 19:49 
>[оверквотинг удален]
> то что стоит в ковычках после слова title (т.е. "Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz"):
> <a class="a-link-normal s-access-detail-page  a-text-normal" title="Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz" href="http://www.amazon.de/Leitz-24230095-Stehsammler-Hartpappe
> schwarz/dp/B0007OEHFS/ref=sr_1_1?ie=UTF8&qid=1442901446&sr=8-1&keywords=Leitz+24230095"><h2
> class="a-size-medium a-color-null s-inline s-access-title a-text-normal">Leitz 24230095
> Stehsammler, A4, Hartpappe, schwarz</h2></a>
> Примерно выражение выглядит так:
> <a class=\"[^\"]*title\"(.*?)</a>
> Но это выражение не работает. Помогите кто может!

Можно так - "нежадное" выражение (синтаксис perl):
/ title=\"(.+?)\"/


"Регулярные выражения"
Отправлено antiwindows , 24-Сен-15 12:04 
>>[оверквотинг удален]
> Можно так - "нежадное" выражение (синтаксис perl):
> / title=\"(.+?)\"/

Аноним, премного благодарен! Ваша регулярка тоже работает идеально!!!