Hallo Liste!
Ich habe einen Text unterschiedlicher Länge. In diesem Text KÖNNEN Textpassagen eingefügt sein, die dann wie folgt gekennzeichnet werden: {~ ~}.
z.B. "normaler Text {~ hiddentext ~} wieder normaler Text {~ noch mal versteckt~} usw..."
An anderer Stelle sollen diese Texte komplett ausgeblendet werden. Ich lasse den Text durch einen Regulären Ausdruck laufen.
{~.*~}
Leider tut er es nicht so wie ich es denke. Ist der gesuchte Text nur einmal vorhanden, funktioniert es problemlos.
Kommt der versteckte Text nicht oder mehr als einmal vor, passt der gesamte Text zwischen der ersten "{~" und der letzten "~}" in den Ausdruck.
Wo ist mein Denkfehler? Wie muss der Ausdruck richtig aussehen?
Gruß RALF
Regulärer Ausdruck tut nicht so wie ich will
Hi,
hast du denn die { escaped?
wäre wohl eine Möglichkeit für optionale geschweifte Klammern mit diesem Inhalt.
hast du denn die { escaped?
Code: Alles auswählen
(\{~.*~})?
wäre wohl eine Möglichkeit für optionale geschweifte Klammern mit diesem Inhalt.
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
Hallo!
Ja, ich lasse den Ausdruck mit der Option r laufen. War nur zu schreibfaul. - und wegen der Übersichtlichkeit
Also richtig: my_re = r"""(\{~.*~\})"""
Das Problem ist sicherlich ".*" Alle Zeichen, beliebig viele, also auch "~}".
Aber wie müsste ich den Ausdruck richtig schreiben. Alle Googleergebnisse setzten immer eine feste Länge oder feste Zeichenkette voraus.
Wenn ich z.B. {~...~} schreibe und die Zeichnfolge GENAU 3 Zeichen lang ist funkt es auch wieder.
RALF
Ja, ich lasse den Ausdruck mit der Option r laufen. War nur zu schreibfaul. - und wegen der Übersichtlichkeit

Also richtig: my_re = r"""(\{~.*~\})"""
Das Problem ist sicherlich ".*" Alle Zeichen, beliebig viele, also auch "~}".
Aber wie müsste ich den Ausdruck richtig schreiben. Alle Googleergebnisse setzten immer eine feste Länge oder feste Zeichenkette voraus.
Wenn ich z.B. {~...~} schreibe und die Zeichnfolge GENAU 3 Zeichen lang ist funkt es auch wieder.
RALF
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
ÌMHO feht da ein Fragezeichen, also so:
my_re = r"""(\{~.*?~\})"""
Von wegen greedy (.*) vs. non-greedy (.*?) : http://www.python-forum.de/viewtopic.php?p=6469#6469
my_re = r"""(\{~.*?~\})"""
Von wegen greedy (.*) vs. non-greedy (.*?) : http://www.python-forum.de/viewtopic.php?p=6469#6469