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