2013-02-01 3 views
3

그래서 문제가 있습니다. 나는 로거에서 몇 가지 물건을 잡는거야, 그리고 출력은 다음과 같은 : 내가 그 성가신 ASCII 색상 코드를 제거 (또는 그들을 구문 분석) 방법을 알아야ASCII 색상 코드 제거

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

.

답변

15

세미콜론으로 구분 숫자 목록, 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을 찾을 수 있습니다. 도움이 될 수 있습니다.)

시퀀스들은 다음 조사 맹 글링이 일어난 정확히 파악해야 어떤 방법 —에 엉망이 된 한 경우입니다 — 손상되지을 경우.

+0

@ thefiscster510 : 환영합니다! – ruakh

+0

좋지만 일부 코드는 여전히 존재합니다.'[2K' – MariuszS

+0

@MariuszS : 예, 나는 괄호로 묶은 주석 (두 번째에서 마지막 단락까지)에서이를 설명했습니다. – ruakh

-1

이 정규식에 대한 형식을 바탕으로

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

가 여기 방법 :가 그대로 있다면, 그들은 ESC (U+001B) 플러스 [ 플러스로 구성되어야 http://bluesock.org/~willg/dev/ansi.html