Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/29950-regulyarnoe-vyrazhenie.html)

Magneto 18.07.2012 15:45

Регулярное выражение
 
Имеется следующая строка:
<tr>
                <th title="Referring Pages" class="border-top pull-05top"><strong>Ref pages</strong></th>
                <td class="font90 border-top">
                                            <a href="/site-explorer/backlinks/domain/mail.ru" onClick="ProcessObj.show();_gaq.push(['_trackEvent', 'SiteExplorer', 'Turn off backlinks filter in backlinks']);">499&rsquo;198</a>
       		                        </td>
            </tr>
            <tr class="zebra">
                <th title="Backlinks" class="pull-2right strong "><strong>Total Backlinks</strong></th>
                <td class="font90">
                                            <a href="/site-explorer/backlinks/domain/mail.ru/backlink" onClick="ProcessObj.show();_gaq.push(['_trackEvent', 'SiteExplorer', 'Turn on backlinks filter backlink in backlinks']);">502&rsquo;124</a>
       		                        </td>
            </tr>


нужно спарсить значение 499&rsquo;198, при этом можно ориентироваться на <strong>Ref pages</strong> и теги, так как классы и атрибуты меняются, Нужно учитывать что дальше многократно повторяются подобные блоки кода, но у всех разное <strong>Ref pages</strong> . В место 499&rsquo;198 может быть просто число или что то типа этого 499&rsquo;198&rsquo;654

Что я сделал на данный момент:
text.match(/<strong>Ref pages<\/strong>[\s\S]+>(\d|&rsquo;)+<\/a>/)

но нифига не работает.

oneguy 18.07.2012 16:25

Возможно, если вы хотите искать до ближайшего "</a>", нужно сделать квантификатор возле [\s\S] ленивым.
text.match(/<strong>Ref pages<\/strong>[\s\S]+?>((?:\d|&rsquo;)+)<\/a>/)

Ещё ошибка: круглые скобки в (\d|&rsquo;)+ ловят только последний \d или &rsquo; чтобы выловить всю последовательность, я исправил на ((?:\d|&rsquo;)+)

Deff 18.07.2012 16:50

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<table id=000>
<tr>
                <th title="Referring Pages" class="border-top pull-05top"><strong>Ref pages</strong></th>
                <td class="font90 border-top">
                                            <a href="/site-explorer/backlinks/domain/mail.ru" onClick="ProcessObj.show();_gaq.push(['_trackEvent', 'SiteExplorer', 'Turn off backlinks filter in backlinks']);">499&rsquo;198</a>
       		                        </td>
            </tr>
            <tr class="zebra">
                <th title="Backlinks" class="pull-2right strong "><strong>Total Backlinks</strong></th>
                <td class="font90">
                                            <a href="/site-explorer/backlinks/domain/mail.ru/backlink" onClick="ProcessObj.show();_gaq.push(['_trackEvent', 'SiteExplorer', 'Turn on backlinks filter backlink in backlinks']);">502&rsquo;124</a>
       		                        </td>
            </tr>

</table>


<script type="text/javascript">
Kawuka=String.fromCharCode(8217);
var text = $("#000").html()
var pattern='^[\\s\\S]*?<strong>Ref pages<\\/strong>[\\s\\S]*?>([0-9]+)'+Kawuka+'[\\s\\S]*<\\/a>[\\s\\S]*$'; 
var regexp  = new RegExp(pattern,"ig");
alert(text.replace(regexp,'$1')) //?>(\\d+'+Kawuka+')+<\\/a>
</script>

nerv_ 18.07.2012 17:01

/\d+&[a-z]+;\d+/

Magneto 18.07.2012 22:30

Ребят, спасибо всем. Регулярка которую предложил oneguy 100% удовлетворяет требованиям.


Часовой пояс GMT +3, время: 09:00.