Question

Je suis en train d'écrire une expression régulière pour mon analyseur html.

Je veux faire correspondre une balise html avec attribut donné (par exemple. De <div> avec class="tab news selected") qui contient une ou plusieurs balises <a href>. L'expression rationnelle doit correspondre à l'intégralité de la balise (de <div> à </div>). Il me semble toujours d'obtenir des erreurs « mémoire épuisée. » - mon programme prend probablement chaque balise peut trouver comme un correspondant

J'utilise les bibliothèques regex boost.

Autres conseils

Vous devriez probablement cette question re. regexps et HTML. L'essentiel est que l'utilisation des expressions régulières pour analyser HTML n'est pas par tous les moyens une solution idéale.

Comme d'autres l'ont dit, ne pas utiliser regexes si possible. Si votre code est en fait XHTML (il est également XML bien formé) aI peut recommander à la fois les Xerces et Expat parseurs XML, ce qui fera un travail beaucoup plus de betterv pour vous que regexes.

Peut-être regexps ne sont pas la meilleure solution, mais je suis déjà en utilisant comme cinq bibliothèques différentes et ne boost bien quand il s'agit de localiser les balises <a href> et mots-clés.

J'utilise ces expressions rationnelles:

/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/ pour localiser les balises et <a href>:

/<a[^\n]*href[[^\n]*>/searched keyword/</a>/ pour les liens de localisation

(BTW peut-il être mieux fait - je suce à regex;))

Ce que je dois maintenant est de localiser les balises contenant feront tout droit de <a href> et je pense que regexps - peut-être que je vais devoir écrire ma propre fonction d'analyse syntaxique comme dit piotr.

Faites comme flex fait. Jeu

avec la casse insensible, et de mettre votre analyseur dans un « div apparié » état, gardez entrée le traitement jusqu'à ce que
et réinitialiser l'état

Cela prend deux expressions régulières et une variable d'état.

balises SGML caractères valides sont [A-Za-z _:]

: / <[A-Za-z _:] +>. / Correspond à une balise

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top