用于匹配 VT100 转义序列的 Python 正则表达式
我正在编写一个记录终端交互的 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
中应该包含什么?
I'm writing a Python program that logs terminal interaction (similar to the script program), and I'd like to filter out the VT100 escape sequences before writing to disk. I'd like to use a function like this:
def strip_escapes(buf):
escape_regex = re.compile(???) # <--- this is what I'm looking for
return escape_regex.sub('', buf)
What should go in escape_regex
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
转义序列的组合表达式可以是这样的通用表达式:
应该与
re.I
一起使用这包含:
\x1b 后跟
@
范围内的字符,直到_
。\x9b
,而不是\x1b + "["
。但是,这对于定义键映射或以其他方式包含在引号中的字符串的序列不起作用。
The combined expression for escape sequences can be something generic like this:
Should be used with
re.I
This incorporates:
\x1b
followed by a character in the range of@
until_
.\x9b
as opposed to\x1b + "["
.However, this will not work for sequences that define key mappings or otherwise included strings wrapped in quotes.
VT100 代码(大部分)已根据类似模式进行分组:
http:// /ascii-table.com/ansi-escape-sequences-vt-100.php
我认为最简单的方法是使用像 regexbuddy 这样的工具为每个定义一个正则表达式VT100 代码组。
VT100 codes are already grouped(mostly) according to similar patterns here:
http://ascii-table.com/ansi-escape-sequences-vt-100.php
I think the simplest approach would be to use some tool like regexbuddy to define a regex for each VT100 codes group.
我找到了以下解决方案来成功解析 vt100 颜色代码并删除不可打印的转义序列。找到的代码片段 此处在使用 telnetlib 运行 telnet 会话时成功删除了我的所有代码:
I found the following solution to successfully parse vt100 color codes and remove the non-printable escape sequences. The code snippet found here successfully removed all codes for me when running a telnet session using telnetlib: