2013-12-11 5 views
0

Как я могу поймать весь этот блок в HTML-выходе? Внутри блока нет открытого тега «noscript».регулярное выражение, чтобы поймать весь блок div на несколько строк

Я использую его с subs_filter на nginx, означает, что любые решения на основе DOM не будут работать здесь.

... 
<div id="me_104" > 
<img src="http://www.google.com" alt="" style="position: absolute; left:0; top: 0; width: 0px; height: 0px;" /> 
     <iframe id="zz_3423_543534" name="zz_3423_543534_54635677" src="http://google.com" width="400" height="80" scrolling="no" frameborder="0" allowtransparency="true" marginwidth="0" marginheight="0"></iframe></noscript> 
</div> 
... 
+0

Какие части этого блока, что может измениться? – Stephan

+0

@Alex img src может измениться, идентификатор iframe, имя, src могут измениться. html-структура остается. – Nenad

ответ

1

Вы можете попробовать это регулярное выражение:

<div\s+id\s*=\s*"me_\d+"\s*>\s*<img[^>]+>\s*<iframe[^>]+></iframe></noscript>\s*</div> 
+0

Спасибо, но это не поймает. – Nenad

+0

Обновление: работа с регулярным выражением, но не с subs_filter на nginx, потому что он анализирует строку за строкой. – Nenad

1

Если вы никогда не иметь другой DIV внутри DIV, вы можете попробовать что-то вроде этого:

<div id="me_104" >.*?</noscript>.*?</div> 

или

<div.*?>.*?</noscript>.*?</div> 

или что-то вроде Alex действительно определили открытие DIV

Если вы хотите, чтобы соответствовать только, если нет открытия NoScript тегов вы можете использовать Negativ предпросмотр так:

<div.*?>(?:(?!<noscript>|</div>).)*</noscript>.*?</div> 

Посмотреть на rubular

Вы должны будете использовать «точку соответствует символу новой строки ".

Или это:

<div.*?>(?:(?!<noscript>|<\/div>)(?:.|\n))*<\/noscript>(?:.|\n)*?<\/div> 

См here

+0

Спасибо, но оба не поймают их. – Nenad

+0

Проблема, вероятно, в том, что точка не соответствует новым строкам. Пожалуйста, посмотрите мой отредактированный ответ. – morja

+0

Обновление: работа с регулярным выражением, но не с subs_filter на nginx, потому что он анализирует строку за строкой. – Nenad

Смежные вопросы