所以,我有一个问题。我正在从记录器中捕获一些东西,输出看起来像这样:
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