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

标签 python regex vt100

我正在编写一个记录终端交互的 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 一起使用

这包括:

  1. 双字节序列,即 \x1b 后跟 @ 范围内的字符,直到 _
  2. 一个字节的 CSI,即 \x9b 而不是 \x1b + "["

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

关于用于匹配 VT100 转义序列的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857352/

相关文章:

javascript - 使用正则表达式在括号之间恢复 HTML 的问题

python - 自定义模块 Odoo 上不存在错误列

python - 使用 Python 识别监听端口

python - 异常: invalid literal for int() with base 10: ''

regex - 来自正则表达式的虚拟机

python - 提取大字符串的部分

c - VT100 数字键盘使用修饰符(ctrl/shift/alt)时的转义码

unix - 我能否确定终端是否解释 C1 控制代码?

c - 如何在 Windows 中使用 vt100 代码

python - 从字段数据中获取 None 而不是空字符串