如何从字符串中删除ANSI代码?

时间:2019-03-24 06:07:41

标签: lua

我正在使用LUA进行字符串操作,遇到以下问题。

以此作为原始数据的示例-

“ [0; 1; 36m(Web):您说,“此处输入文字。” [0; 37m”

除了删除ANSI代码外,我希望保留字符串的完整性。

我已经指出要在LUA模式匹配中使用gsub,但是我似乎无法正确获得模式。我也不确定如何准确引用发送的转义字符。

text:gsub("[\27\[([\d\;]+)m]", "")
or
text:gsub("%x%[[%d+;+]m", "")

如果成功,使用上面的示例,我想要保留的全部就是:

(网络):您说,“在此处输入文字。”

1 个答案:

答案 0 :(得分:1)

您的字符串示例缺少转义字符ASCII 27。

这是一种方法:

s = '\x1b[0;1;36m(Web): You say, "Text here."\x1b[0;37m'
s = s:gsub('\x1b%[%d+;%d+;%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+;%d+m','')
     :gsub('\x1b%[%d+;%d+m','')
     :gsub('\x1b%[%d+m','')
print(s)