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.
Antworten
movies1978
User
Beiträge: 15
Registriert: Montag 13. Februar 2006, 13:25

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

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:

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

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

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
Antworten