我想在golang中替换shell输出的所有ANSI / VT100 / xterm控制序列我搜索了这个正则表达式模式here,但它不起作用! 这是错误:
panic: regexp: Compile(`[\b]`): error parsing regexp: invalid escape sequence: `\b`
让我说清楚一点。我想在golang中完成以下代码:
#!/usr/bin/env perl
while (<>) {
s/ \e[ #%()*+\-.\/]. |
(?:\e\[|\x9b) [ -?]* [@-~] | # CSI ... Cmd
(?:\e\]|\x9d) .*? (?:\e\\|[\a\x9c]) | # OSC ... (ST|BEL)
(?:\e[P^_]|[\x90\x9e\x9f]) .*? (?:\e\\|\x9c) | # (DCS|PM|APC) ... ST
\e.|[\x80-\x9f] //xg;
1 while s/[^\b][\b]//g; # remove all non-backspace followed by backspace
print;
}
答案 0 :(得分:2)
改为使用[^\x08]\x08
。
[\b]
和\e
未包含在 regexp syntax 中支持的转义序列中。
退格:对于其他正则表达式,转义序列\b
在字符类中具有不同的含义:它与退格符(十六进制08)匹配。但是,您可以将其作为\x08
转义。
Esc :同样,对于Escape \e
(hex 1B),请使用\x1b
。
此外,如果您想匹配任何控制字符,您可以使用与[[:cntrl:]]
匹配的[\x00-\x1F\x7F]
。