だから、私は問題を抱えています。ロガーからいくつかのものをキャッチしています。出力は次のようになります。
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 エスケープ シーケンスも見つかった場合は、それを少し一般化する必要があります。かなり一般的な正規表現は次のようになると思います。http://en.wikipedia.org\u001B\\[[;\\d]*[ -/]*[@-~]
を見つけることができます。 /wiki/ANSI_escape_codeが参考になります。)
シーケンスが完全でない場合(つまり、何らかの方法で破損している場合) は、何が破損したのかを調査して正確に把握する必要があります。
この正規表現はどうですか
replaceAll("\\d{1,2}(;\\d{1,2})?", "");
ここにある形式に基づく: http://bluesock.org/~willg/dev/ansi.html