¿Cómo analizar esta pieza de HTML?

c# html html-agility-pack

Pregunta

¡Buenos días! Estoy usando c # (framework 3.5sp1) y quiero analizar la siguiente pieza de html a través de expresiones regulares:

<h1>My caption</h1>
<p>Here will be some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

Necesito el siguiente resultado:

  • grupo 1: contenido de h1
  • grupo 2: contenido de h1-siguiente texto
  • grupo 3-n: contenido de subcapciones + texto

lo que tengo atm:

<hr.*?/>
<h2.*?>(.*?)</h2>
([\W\S]*?)
<hr.*?/>

esto me dará cada subcategoría impar + contenido (por ejemplo, 1, 3, ...) debido al final <hr/> . para analizar la leyenda h1 tengo otro patrón ( <h1.*?>(.*?)</h1> ), que solo me da la leyenda pero no el contenido. Estoy bien con esa atm.

¿Alguien tiene una sugerencia / solución para mí o alguna lógica alternativa (por ejemplo, analizar el html a través del lector y asignarlo de esta manera?)

editar:
Como algunos trajeron HTMLAgilityPack , tenía curiosidad acerca de esta buena herramienta. Logré obtener el contenido de la etiqueta <h1> .
pero ... myproblem está analizando el resto. esto se debe a que: las etiquetas para el contenido pueden variar, de <p> a <div> y <ul> ... ¿parece que esto es más o menos iterativo en todo el documento y la etiqueta de análisis de la etiqueta ...? ¿Alguna pista?

Respuesta aceptada

Realmente necesitarás un analizador de HTML para esto


Respuesta popular

No utilice expresiones regulares para analizar HTML. Considera usar el paquete de agilidad HTML .



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué