2010-09-27 5 views
0

Actuellement, j'essaye d'analyser du HTML et de retourner un tableau avec les valeurs de chaque élément.Comment analyser html et retourner le tableau de valeurs dans C# en utilisant regex.split

Par exemple:

si je passe le balisage ci-dessous en fonction

var element = "td"; 
var html = "<tr><td>1</td><td>2</td></tr>"; 
return Regex.Split(html, string.Format("<{0}*.>(.*?)</{0}>", element)); 

Et je prévois revenir un tableau [] {1, 2}

Qu'est-ce que mon regex besoin de ressembler? Actuellement, mon tableau revient avec beaucoup d'éléments et mes compétences d'expression régulière manquent

+6

[Analyser (X) HTML avec RegEx!? !!!! ???] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contenu- tags/1732454 # 1732454) Cette blague ne vieillit jamais, n'est-ce pas? – dtb

+2

Avant de continuer sur ce chemin, lisez ceci (edit - dtb me bat dessus) – Donut

+0

@dtb: non, * jamais *. – BoltClock

Répondre

6

Ne pas analyser HTML en utilisant des expressions régulières.

Au lieu de cela, vous devez utiliser le HTML Agility Pack.

Par exemple:

HtmlDocument doc = new HtmlDocument(); 
doc.Parse(str); 

IEnumerable<string> cells = doc.DocumentNode.Descendants("td").Select(td => td.InnerText); 
1

Vous devriez vraiment pas utiliser regex pour analyser html. html n'est pas un langage régulier, donc regex n'est pas capable de l'interpréter correctement. Vous devriez utiliser un analyseur.

C# a le code parsers for this.

Questions connexes