Wie man einen regulären Ausdruck für HTML-Analyse schreiben?
-
16-09-2019 - |
Frage
Ich versuche, einen regulären Ausdruck für meinen HTML-Parser zu schreiben.
Ich möchte mit bestimmten Attribut einen HTML-Tag übereinstimmen (zB. <div>
mit class="tab news selected"
), die eine oder mehrere <a href>
-Tags enthält. Die regexp sollte den gesamten Tag (von <div>
zu </div>
) entspricht. Ich scheine immer „Speicher erschöpft“ Fehler zu bekommen -. Mein Programm wahrscheinlich jeden Tag nimmt es als passendes finden kann
I boost regex Bibliotheken bin mit.
Lösung
Sie können auch diese Fragen hilfreich sein:
Können Sie ein Beispiel nennen Parsen HTML mit Ihrem Lieblings-Parser?
Andere Tipps
Sie sollten wahrscheinlich sehen diese Frage erneut. regexps und HTML. Der Kern ist, dass reguläre Ausdrücke mit HTML zu analysieren ist keineswegs eine ideale Lösung.
Vielleicht regexps ist nicht die beste Lösung, aber ich bin schon mit wie fünf verschiedene Bibliotheken und boost tut gut, wenn es <a href>
Tags und Keywords zu lokalisieren kommt.
Ich verwende diese regexps:
/<a[^\n]*/searched attribute/[^\n]*>[^\n]*</a>/
zum Lokalisieren <a href>
Tags und:
/<a[^\n]*href[[^\n]*>/searched keyword/</a>/
zum Lokalisieren Links
(BTW kann es besser machen - ich regex saugen;))
Was ich brauche jetzt ist die Lokalisierung Tags <a href>
des enthält, und ich denke, regexps wird alles gut tun - vielleicht werde ich brauche, um meine eigene Parsing-Funktion zu schreiben, wie piotr sagte.
Sie als flex tut. Spiel
Das dauert zwei regexps und eine Zustandsgröße.
SGML gültige Zeichen sind [A-Za-z _:]
So: / <[A-Za-z _:] +>. / Stimmt mit einem Tag