我正在编写一个记录终端交互的 Python 程序(类似于 script 程序),我想在写入磁盘之前过滤掉 VT100 转义序列。我想使用这样的功能:
def strip_escapes(buf):
escape_regex = re.compile(???) # <--- this is what I'm looking for
return escape_regex.sub('', buf)
escape_regex
应该放什么?
最佳答案
转义序列的组合表达式可以像这样通用:
(\x1b\[|\x9b)[^@-_]*[@-_]|\x1b[@-_]
应与 re.I
一起使用
这包括:
- 双字节序列,即
\x1b
后跟@
范围内的字符,直到_
。 - 一个字节的 CSI,即
\x9b
而不是\x1b + "["
。
但是,这不适用于定义键映射或以其他方式包含在引号中的字符串的序列。
关于用于匹配 VT100 转义序列的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857352/