Python正则表达式匹配VT100转义序列

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怎么做?

Ja͢*_*͢ck 5

转义序列的组合表达式可以是这样的通用表达式:

(\x1b\[|\x9b)[^@-_]*[@-_]|\x1b[@-_]
Run Code Online (Sandbox Code Playgroud)

应与re.I

这包括:

  1. 两字节序列,即后跟直到\x1b范围内的字符。@_
  2. 一字节 CSI,\x9b即与\x1b + "[".

但是,这对于定义键映射或以其他方式包含在引号中的字符串的序列不起作用。


Ale*_*oks 3

VT100 代码已(大部分)根据此处的类似模式进行分组:

http://ascii-table.com/ansi-escape-sequences-vt-100.php

我认为最简单的方法是使用像 regexbuddy 这样的工具为每个 VT100 代码组定义一个正则表达式。