Как мне разобрать HTML с помощью регулярных выражений в C#?

Как мне разобрать HTML с помощью регулярных выражений в C#?

Например, данный код HTML

<s2> t1 </s2>  <img src='1.gif' />  <span> span1 <span/>

Я пытаюсь получить

1.  <s2>
2.  t1
3. </s2>
4. <img src='1.gif' />
5. <span>
6. span1
7. <span/>

Как мне сделать это с помощью регулярных выражений в C#?

В моем случае, ввод HTML не является правильно сформированным XML, как XHTML. Поэтому я не могу использовать парсеры XML для этого.

5 ответов

Решение

Я использовал этот regx в C#, и он работает. Спасибо за все ваши ответы.

<([^<]*)>|([^<]*)

Регулярные выражения - очень плохой способ разбора HTML. Если вы можете гарантировать, что ваши входные данные будут иметь правильно сформированный XML (т.е. XHTML), вы можете использовать XmlReader для чтения элементов, а затем распечатывать их по своему усмотрению.

На это уже отвечали буквально десятки раз, но стоит повторить: регулярные выражения могут анализировать только регулярные языки, поэтому они называются регулярными выражениями. HTML не является обычным языком (как, наверное, каждый студент колледжа за последнее десятилетие доказал хотя бы один раз), и поэтому не может быть проанализирован с помощью регулярных выражений.

Возможно, вы захотите попробовать Html Agility Pack, http://www.codeplex.com/htmlagilitypack. Он даже обрабатывает искаженный HTML.

Вы можете просто использовать строковые функции. сделать <и> в качестве вашего индикатора для разбора.

Другие вопросы по тегам