Регулярные выражения
с помощью регулярных выражений надо вытащить из исходного кода название продукта. Это то что стоит в ковычках после слова 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> Но это выражение не работает. Помогите кто может! :help: |
antiwindows,
а зачем регулярка? |
antiwindows,
<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> <script> alert(document.links[0].title); </script> |
Благодарю за быстрый ответ, но необходимо именно регулярное выражение. Результат должен выдаваться построчно.
var man_name = "Leitz"; var man_art_nr = "24230095"; var searchUrlAmazon = "http://www.amazon.de/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords="; var searchVar = encodeURI(man_name + " " + man_art_nr); var amazonSite = loadURL(searchUrlAmazon + searchVar).replace(/\n/g,'').replace(/\r/g,''); var amTitel = new RegExp('ЗДЕСЬ ДОЛЖНА СТОЯТЬ РЕГУЛЯРКА','g'); var match = amTitel.exec(amazonSite); for (var i=0; i < 5; i++){ writeln('Titel: ' + match[1]); fwrite(fh,'Titel: ' + match[1] + '\n'); match = amTitel.exec(amazonSite); } writeln("stop Titel"); writeln("\n"); |
Цитата:
|
antiwindows,
var a = '<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>' var div = document.createElement('div'); div.innerHTML = a; alert(div.querySelector('a').title); |
Спасибо за идею, она мне пригодится, если буду решать эту задачу в чистом яваскрипте, но на данный момент нужна именно регулярка
|
/\btitle\s*=\s*"(.*?)"/ |
Aetae, спасибо огромное! Но если задаю Вашу регулярку в эвалюаторе, то название находит. Если вставляю её как есть в свой код, то выдаёт ошибку:
Script Exception! File: H:\svn\test\test.js Line: 45 Pos : 0 Msg : [222] TypeError: match is null Как я понимаю, необходимо ключевое слово по которому ведётся поиск по исходному коду. Есть возможность оформить эту (/\btitle\s*=\s*"(.*?)"/) регулярку как в примере: <span class="a-size-base a-color-price s-price a-text-bold">EUR 5,50</span> Регулярка для этого исходного кода: <span class=\"[^\"]*s-price[^\"]*\"[^>]*>(.*?)</span> ? |
Решение найдено. Несколько регулярок, которые выдают то что нужно:
<a[^>]+title="([^"]+)" title=\"(.+?)\"' title=\"([^\"]+)\" огромное спасибо всем! |
Мои 5коп... :)
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> window.onload=function(){ var txt=document.getElementById('test').innerHTML; alert(txt.match(/title="[^"]*"/g)[0].split('"')[1]); }; </script> </head> <body> <div id='test'> <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> </div> </body> </html> |
ksa,
а вдруг кавычки одинарные будут? :) |
рони, а вдруг нет... :D
|
Цитата:
Цитата:
|
Цитата:
title=['"][^"']*['"]/g Это что трудно? Кроме того, ты не обработал случаи пробельных символов и тд, не выделил границы слова, полностью лень разбираться. |
Цитата:
Мой пример сделан исключительно под тестовые данные ТСа и не более того. Что с ни делать пусть каждый решает сам. ;) |
ksa,
Вот так примерно твоя регулярка должна выглядеть var s = "bala foo='1'blafoo='2' bla foo=\"3\"bla" console.log(s.match(/\bfoo\s*=\s*["'][^'"]*["']/g)) //>>>[ 'foo=\'1\'', 'foo="3"' ] |
Цитата:
Но бывают случаи когда нужно просто взять молоток и забить. ;) |
Часовой пояс GMT +3, время: 17:14. |