Hallo Forum,
ich stehe gerade auf dem Schlauch.
Wenn ich möchte, dass alles außer ein Zeichen funktioniert geht das so: [^"]*, damit gehen alle Zeichen durch, bis auf doppelt Anführungszeichen.
Jetzt möchte ich aber statt den Anführungszeichen eine Zeichenkette definieren. Da komme ich gerade nich drauf. Sprich: ich möchte, dass jedes Zeichen genommen wird, aber bei der Zeichenkette </a> soll abgebrochen werden.
Mich verwirrt es gerade.
Gruß
Sparrow
Reguläre Ausdrücke: Zeichenkette ausscchließen
Das ist MIT regulären Ausdrücken auch nicht so einfach möglich. Und da du html zu prozessieren scheinst, solltest du reguläre Ausdrücke auch einfach vermeiden und gleich einen robusten html Parser wie beautifulsoup oder lxml benutzen.
@sparrow: Nimm für HTML lieber einen HTML-Parser statt selber etwas mit regulären Ausdrücken zu basteln. `lxml.html` ist ganz gut.
So etwas?
Das Geheimnis ist hier das "?", welches den "*" non-greedy macht, d.h. es wird nicht der längste sondern der kürzeste Teilstring gesucht, nach dem ein "</a>" folgt.
(Üblicher Disclaimer, das REs keine gute Wahl für HTML-Dokumente sind, gilt)
Stefan
Das Geheimnis ist hier das "?", welches den "*" non-greedy macht, d.h. es wird nicht der längste sondern der kürzeste Teilstring gesucht, nach dem ein "</a>" folgt.
(Üblicher Disclaimer, das REs keine gute Wahl für HTML-Dokumente sind, gilt)
Code: Alles auswählen
print re.search(r"<a>(.*?)</a>", "Hallo <a>Welt</a>!").group(1)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
HTML ist eine Auszeichnungssprache - die Aussage ist somit falsch SCNRsparrow hat geschrieben: Es ging übrigens nicht um HTML sondern um eine Auszeichnungssprache.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert