2010-08-05 4 views
1

J'ai besoin d'une regex qui trouvera soit une balise div d'ouverture, soit une balise div de fermeture, soit les deux dans une page web html. Merci :)regex pour trouver les balises div

+3

Utilisez un analyseur HTML. –

+0

Quelle langue utilisez-vous? –

+1

Oh non, pas encore. -.- http://tinyurl.com/yzep3mp – Cumbayah

Répondre

1

Vous pouvez commencer par:

</?div> 

Ce ne sera pas gérer correctement:

  • espaces
  • attributs sur la div
  • balises div fermeture automatique
  • étiquettes majuscules
  • s dans les commentaires HTML qui doit être ignorée
  • etc ...

Pour gérer correctement HTML vous êtes mieux à l'aide d'un analyseur HTML plutôt que des expressions régulières.

2

Juste pour être sûr:

</? *div[^>]*> 
+0

Je ne décrirais pas cela comme "sûr". –

0

HTML, XHTML, and XML can not be parsed using regular expressions. Il y a des analyseurs conçus pour ce genre de choses. Si vous spécifiez la (les) langue (s) que vous utilisez, je suis sûr que quelqu'un peut suggérer le ou les bons outils pour le travail, mais je sais pertinemment que les expressions régulières ne figureront pas sur cette liste.

+0

Il/elle a dit qu'il/elle veut trouver les étiquettes, pas nécessairement analyser le contenu. – NullUserException

+0

Peu importe ce que vous voulez faire - la plupart des parseurs que j'ai vus vous permettent de faire des choses comme des balises de comptage aussi. Mais regex n'est jamais la bonne réponse lorsqu'il s'agit de HTML. –

1

Si vous pouvez utiliser xpath ce serait //div Regardez dans l'utilisation d'un analyseur XML qui le supporte au lieu de regex. Si vous devez utiliser regex, allez avec la réponse de coding_hero.

Juste pour le spectacle, en PHP:

//$htmldoc is some xhtml document from somewhere 
$xhtml = simplexml_load_file($htmldoc); 
$divs = $xhtml->xpath('//div'); //grab simpleXMLElement from all divs in document 
return $divs->asXML(); //returns xml of div elements and children 
+0

Je crois que XPath requiert du contenu XML. HTML n'est pas conforme à toutes les règles de XML. –

+0

D'accord, mais c'est pour cela que j'ai ajouté "si ça doit être regex, utilise coding_hero". J'ai également précisé qu'il est basé sur un document xhtml. SimpleXML est également entièrement compatible avec DOM en PHP. – Tim

0

Pour trouver l'ouverture et la fermeture de balise div Je voudrais utiliser

</?\bdiv\b[^>]*> 
Questions connexes