Lor*_*ein 9 python regex vt100
我正在编写一个记录终端交互的Python程序(类似于脚本程序),我想在写入磁盘之前过滤掉VT100转义序列.我想使用这样的函数:
def strip_escapes(buf):
escape_regex = re.compile(???) # <--- this is what I'm looking for
return escape_regex.sub('', buf)
Run Code Online (Sandbox Code Playgroud)
应该escape_regex
怎么做?
转义序列的组合表达式可以是这样的通用表达式:
(\x1b\[|\x9b)[^@-_]*[@-_]|\x1b[@-_]
Run Code Online (Sandbox Code Playgroud)
应与re.I
这包括:
\x1b
范围内的字符。@
_
\x9b
即与\x1b + "["
.但是,这对于定义键映射或以其他方式包含在引号中的字符串的序列不起作用。
VT100 代码已(大部分)根据此处的类似模式进行分组:
http://ascii-table.com/ansi-escape-sequences-vt-100.php
我认为最简单的方法是使用像 regexbuddy 这样的工具为每个 VT100 代码组定义一个正则表达式。