Ich benutze Python und möchte alle HTML-Tags aus einer Zeichenfolge entfernen, die nicht in bestimmten Tags enthalten sind. In diesem Beispiel möchte ich alle HTML-Tags entfernen, die nicht in den <header>
Tags </header>
enthalten sind, und auch das umschließende Tag nicht entfernen.Python Regex, um alle Tags zu entfernen, die nicht zwischen zwei anderen Tags sind
Zum Beispiel:
<h1>Morning</h1>
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
<h2>Night</h2>
Ergebnis:
Morning
<header>
<h1>Afternoon</h1>
<h2>Evening</h2>
</header>
Night
Ich habe dafür ausgegeben Stunden, aber ohne Glück. Ich weiß, der alle folgenden Tags finden:
re.sub('<.*?>', '', mystring)
Und das wird alles innerhalb der Header-Tags finden:
re.sub('<header>.*?</header>', '', mystring)
Aber wie mache ich es zu negieren, so dass die erste Regex was ignoriert die zweite Regex findet? Jede Hilfe wird sehr geschätzt! Vielen Dank! :)
nicht regex Verwenden Sie HTML zu verarbeiten (https://stackoverflow.com/questions/701166/can-you-provide-some-examples- of-warum-es-ist-schwer-zu-xml-und-html-mit-a-reg zu parsen. Lernen Sie Beautifulsoup zu benutzen und Ihr Leben viel einfacher zu machen. –
Ich benutze es, um HTML-Dokumente zu verarbeiten, die in einem sehr spezifischen Format sind (jedes Dokument ist das exakt gleiche Format und hat viele strenge Regeln, was geschrieben wird), also wird es keine dieser wilden HTML-Tags innerhalb von Tags und so weiter geben Ich brauche das so schnell wie möglich, so dass ich momentan keine Zeit habe, aber in naher Zukunft definitiv lernen werde, Beautifulsoup zu benutzen! – cullan
@cullan Ich empfehle wirklich BS4. Alles was es braucht, ist eine schnelle 'pip install beautifulsoup4' gefolgt von der Ausführung des Codes in meiner Antwort. :) –