所以,我有一个问题。我从记录仪捕捉一些东西,并且输出看起来是这样的:删除ASCII颜色代码
11:41:19 [INFO] ←[35;1m[Server] hi←[m
我需要知道如何去除这些讨厌的ASCII颜色代码(或对其进行解析)。
所以,我有一个问题。我从记录仪捕捉一些东西,并且输出看起来是这样的:删除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
@ thefiscster510:不客气! – ruakh
不错,但有些代码仍然存在:'[2K' – MariuszS
@MariuszS:是的,我在括号内注明了这一点(倒数第二段)。 – ruakh