Domanda

Sto cercando di scrivere un espressione regolare per il mio parser HTML.

Voglio corrispondere un tag HTML con dato attributo (ad es. <div> con class="tab news selected") che contiene uno o più tag <a href>. L'espressione regolare deve corrispondere l'intero tag (da <div> a </div>). Mi sembra sempre di ottenere "memoria esaurita" errori -. Il mio programma prende probabilmente ogni tag che riesce a trovare un corrispondente uno

Sto usando le librerie Boost regex.

Altri suggerimenti

Probabilmente si dovrebbe guardare a questa domanda ri. espressioni regolari e HTML. Il succo è che l'utilizzo di espressioni regolari per analizzare HTML, non è affatto una soluzione ideale.

Come altri hanno detto, non usare espressioni regolari, se possibile. Se il codice è in realtà XHTML (vale a dire che è anche ben formato XML) AI può consigliare sia le Xerces e Expat parser XML, che farà un lavoro betterv molto per voi che le regex.

Forse espressioni regolari non sono la soluzione migliore, ma sto già utilizzando come cinque diverse librerie e spinta fa bene quando si tratta di localizzare i tag <a href> e parole chiave.

Sto usando queste espressioni regolari:

/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/ per localizzare i tag <a href> e:

/<a[^\n]*href[[^\n]*>/searched keyword/</a>/ per l'individuazione di collegamenti

(BTW si può fare meglio - faccio schifo a regex;?))

Quello che ho bisogno ora è localizzare i tag contenenti <a href> di espressioni regolari e penso che farà bene - forse avrò bisogno di scrivere la mia funzione di parsing come ha detto Piotr.

Non come flex fa:. Partita

con una tra maiuscole e minuscole, e mettere il parser in uno stato di "div abbinato", mantenere l'elaborazione di ingresso fino a
e ripristinare lo stato

Questa operazione richiede due espressioni regolari e una variabile di stato.

tag SGML caratteri validi sono [A-Za-z _:]

: / <[A-Za-z _:] +>. / Corrisponde un tag

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top