2009-06-11 20 views
5

Come utilizzerei Regex per estrarre il corpo da un documento html, tenendo conto che i tag html e body potrebbero essere in maiuscolo, in minuscolo o potrebbero non esistere?Regex Extract corpo html

+5

Duplicato di http://stackoverflow.com/questions/356340/regolare-expression-to-extract-html-body-content? – M4N

risposta

9

Non utilizzare un'espressione regolare per questo - utilizzare qualcosa come lo Html Agility Pack.

Si tratta di un parser HTML agile che costruisce una lettura/scrittura DOM e supporta XPATH normale o XSLT (che in realtà non c'è bisogno di capire XPATH né XSLT per usarlo, non ti preoccupare. ..). È una libreria di codice .NET che consente di eseguire il file "fuori dal Web" HTML. Il parser è molto tollerante con l'HTML "reale mondo" non valido. Il modello dell'oggetto è molto simile a quello che propone System.Xml, ma per documenti HTML (o flussi ).

Quindi è possibile estrarre il body con un XPATH.

+0

Sono d'accordo. Ho usato questo e devo dire che è veloce, pulito e pulito. –

0

Questo dovrebbe farti molto vicino:

(?is)<body(?:\s[^>]*)>(.*?)(?:</\s*body\s*>|</\s*html\s*>|$) 
+0

Si prega di fornire la soluzione di dettaglio. – ShaileshDev

11

Che ne dite di qualcosa di simile?

Cattura tutto tra i tag <body></body> (senza distinzione tra maiuscole e minuscole a causa di RegexOptions.IgnoreCase) in un gruppo denominato theBody.

RegexOptions.Singleline ci consente di gestire HTML multilinea come una singola stringa.

Se l'HTML non contiene i tag <body></body>, la proprietà Success della corrispondenza sarà falsa.

 string html; 

     // Populate the html string here 

     RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Singleline; 
     Regex regx = new Regex("<body>(?<theBody>.*)</body>", options); 

     Match match = regx.Match(html); 

     if (match.Success) { 
      string theBody = match.Groups["theBody"].Value; 
     } 
+0

+1 per una soluzione pulita e pulita –

+0

Grazie! Questo è ciò per cui mi impegno. – Darryl

+0

Fantastico, questo fa esattamente quello di cui avevo bisogno. – Nadjib

Problemi correlati