Seite 1 von 1

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

Verfasst: Montag 13. Februar 2006, 13:29
von movies1978
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?

Verfasst: Montag 13. Februar 2006, 14:10
von N317V
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.

Verfasst: Montag 13. Februar 2006, 14:19
von modelnine
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!

Verfasst: Montag 13. Februar 2006, 14:52
von movies1978
Daaaaanke,
das klappt sehr gut. Es scheint auch mit \033 zu gehen, sind wohl synoym.

Mfg
Mathias

Verfasst: Montag 13. Februar 2006, 15:00
von N317V
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. ;-)