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

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

以这个原始数据的示例为例:

"\ [0;1;36m(Web):您说,“这里的文本。”\ [0;37m"

除了删除ANSI代码之外,我希望保留字符串不变。

我被指向使用具有LUA模式匹配的gsub但我似乎无法正确获取模式。 我也不确定如何引用准确地发送的转义字符

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

如果成功,我想留下的只是上面的例子:

(Web):您说,“这里的文本。”

点赞
用户3735873
用户3735873

你的字符串示例缺少转义字符 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)
2019-03-24 14:12:40