删除ASCII颜色代码(Remove ASCII color codes)

2019-07-19 03:56发布

所以,我有一个问题。 我从记录仪捕捉一些东西,并且输出看起来是这样的:

11:41:19 [INFO] ←[35;1m[Server] hi←[m

我需要知道如何去除这些讨厌的ASCII颜色代码(或对其进行解析)。

Answer 1:

如果他们是完整的,就应该由ESC(的U+001B ),加上[加号的分号分隔的列表,加上m 。 (见https://stackoverflow.com/a/9943250/978917 。)在这种情况下,你可以通过书面形式将其删除:

final String msgWithoutColorCodes =
    msgWithColorCodes.replaceAll("\u001B\\[[;\\d]*m", "");

。 。 。 或者您也可以通过利用它们less -r检查你的日志时。 :-)

(注:这是特定于颜色代码。如果你还可以找到其他的ANSI转义序列,你要笼统地说了一下,我认为一个相当普遍的正则表达式会。 \u001B\\[[;\\d]*[ -/]*[@-~] 。您可能会发现http://en.wikipedia.org/wiki/ANSI_escape_code是有益的)。

如果序列是完整的-也就是说,如果他们已经以某种方式错位-那么你就必须进行调查,并找出什么忙玲已经发生。



Answer 2:

这个怎么样的正则表达式

replaceAll("\\d{1,2}(;\\d{1,2})?", "");

基于该格式在这里找到: http://bluesock.org/~willg/dev/ansi.html



文章来源: Remove ASCII color codes