所以,我有一個問題。我從記錄儀捕捉一些東西,並且輸出看起來是這樣的:刪除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