2013-07-04 2 views
-2

как получить innerhtml с вложенными тегами с помощью регулярных выраженийкак получить innerhtml с помощью регулярных выражений

Пример:

<div class="def"> 
<ul> 
<li>..</li> 
<li>..</li> 
</ul> 
</div> 

<div class="def"> 
<ul> 
<li>..</li> 
<li>..</li> 
</ul> 
</div> 

мне нужно только первое содержимое Div этого кода "(?s)(<div\\sclass=\"def\">(.+)<\\/div>)" когда-либо я использую этот код я получаю как содержимое div

Как получить только первый в одиночку?

Пожалуйста, помогите ...

+3

[См. Здесь] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

+3

с помощью хорошего анализатора html – Anirudha

+3

Помогите себе и всему миру путем остановки использования regex для синтаксического анализа html. –

ответ

7

Это becuase из .+ в вашем regex..Change это .+?

Но вы должны НИКОГДА не использование REGEX для разбора HTML ..

использовать HTML PARSER и вот как get div


Зачем использовать парсер?

Рассмотрим ваши regex..There бесконечное множество случаев, когда вы могли бы нарушить ваш код

  • Ваше регулярное выражение не будет работать, если есть вложенными дивы
  • Некоторые дивы не имею окончание тег! (кроме XHTML)

Резюмируя никогда не когда-либо когда-либо когда-либо когда-либо когда-либо использовать регулярные выражения для разбора HTML

+0

Я бы порекомендовал [jsoup] (http://jsoup.org/) –

+0

@LuiggiMendoza hmm..that one is great – Anirudha

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