所以,我有一个问题。 我从记录仪捕捉一些东西,并且输出看起来是这样的:
11:41:19 [INFO] ←[35;1m[Server] hi←[m
我需要知道如何去除这些讨厌的ASCII颜色代码(或对其进行解析)。
所以,我有一个问题。 我从记录仪捕捉一些东西,并且输出看起来是这样的:
11:41:19 [INFO] ←[35;1m[Server] hi←[m
我需要知道如何去除这些讨厌的ASCII颜色代码(或对其进行解析)。
如果他们是完整的,就应该由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是有益的)。
如果序列是不完整的-也就是说,如果他们已经以某种方式错位-那么你就必须进行调查,并找出什么忙玲已经发生。
这个怎么样的正则表达式
replaceAll("\\d{1,2}(;\\d{1,2})?", "");
基于该格式在这里找到: http://bluesock.org/~willg/dev/ansi.html