13

だから、私は問題を抱えています。ロガーからいくつかのものをキャッチしています。出力は次のようになります。

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

これらの厄介な ASCII カラー コードを削除する (または解析する) 方法を知る必要があります。

4

2 に答える 2

38

変更されていない場合は、ESC ( U+001B) と[、セミコロンで区切られた数字のリスト、およびm. (https://stackoverflow.com/a/9943250/978917を参照してください。)その場合、次のように記述して削除できます。

final String msgWithoutColorCodes =
    msgWithColorCodes.replaceAll("\u001B\\[[;\\d]*m", "");

. . . less -rまたは、ログを調べるときに使用してそれらを利用できます。:-)

(注: これはカラー コードに固有のものです。他の ANSI エスケープ シーケンスも見つかった場合は、それを少し一般化する必要があります。かなり一般的な正規表現は次のようになると思います。http://en.wikipedia.org\u001B\\[[;\\d]*[ -/]*[@-~]を見つけることができます。 /wiki/ANSI_escape_codeが参考になります。)

シーケンスが完全でない場合(つまり、何らかの方法で破損している場合) は、何が破損したのかを調査して正確に把握する必要があります。

于 2013-02-01T18:28:45.603 に答える
-1

この正規表現はどうですか

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

ここにある形式に基づく: http://bluesock.org/~willg/dev/ansi.html

于 2013-02-01T18:28:25.617 に答える