Regulären Ausdruck für das Escapezeichen ???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
movies1978
User
Beiträge: 15
Registriert: Montag 13. Februar 2006, 13:25

Regulären Ausdruck für das Escapezeichen ???

Beitragvon movies1978 » Montag 13. Februar 2006, 13:29

Ich würd gern,
aus einer Ausgabe alle VT100 Kontrollsequenzen löschen. Daher muß ich das Escape Symbol finden. Wie escape ich also das Escapesymbol????
Interessant wäre auch direkt ein regulärer Ausdruck für alle VT100 Kontrollsequenzen ;-)
Mfg

Mathias

EDIT:
Gibt es evtl. eine Liste von (allen) allen Python Escape Sequenzen?
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Montag 13. Februar 2006, 14:10

Ich hab zwar keine Ahnung von VT100 Kontrollsequenzen (was ist das eigentlich?), aber normalerweise escaped man das Escape-Zeichen mit dem Escape-Zeichen. Also für das Escape-Zeichen '\ ' schreibt man '\\'. So ist es zumindest in jeder RegEx-Impementierung, die ich kenne.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Montag 13. Februar 2006, 14:19

Das Escape-Symbol ist ASCII 0x1b, also kannst Du einfach:

Code: Alles auswählen

re.compile("\x1b<blah>")


schreiben, da das Zeichen sonst kein Zeichen ist was ein syntaktisches Element eines regulären Ausdrucks wäre. "\x1b" ist die gewöhnliche Art und Weise ein Zeichen als Hexadezimalen Code-Point anzugeben in einem String.

Sonst, eine rudimentäre Regex um fast alles rauszufiltern (bis auf die Define-Key Befehlssequenz):

Code: Alles auswählen

import re

VT100_RE = re.compile("\x1b(\\[[0-9;]*[a-zA-Z]|[a-zA-Z0-9\\(\\)])")

VT100_RE.sub("",mystring)


HTH!
--- Heiko.
movies1978
User
Beiträge: 15
Registriert: Montag 13. Februar 2006, 13:25

Beitragvon movies1978 » Montag 13. Februar 2006, 14:52

Daaaaanke,
das klappt sehr gut. Es scheint auch mit \033 zu gehen, sind wohl synoym.

Mfg
Mathias
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Montag 13. Februar 2006, 15:00

movies1978 hat geschrieben:Es scheint auch mit \033 zu gehen, sind wohl synoym.


Das ist der Oktalwert des Hexadezimalwertes 0x1b des Dezimalwertes 27, der Binär als 11011 geschrieben wird. ;-)
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]