我正在使用自动化,并使用Jsch连接到远程盒子并自动执行一些任务。
我在解析命令结果时遇到问题,因为有时它们带有ANSI控制字符。
我已经看到了这个答案和另一个,但它没有提供任何库来做这个。如果有的话,我不想重新发明轮子。我对这些答案没有信心。
现在,我正在尝试这个,但我不确定它是否足够完整。
reply = reply.replaceAll("\[..;..[m]|\[.{0,2}[m]|\(Page \d+\)|u001B\[[K]|u001B|u000F", "");
如何从Java字符串中删除ANSI控制字符(VT100) ?
大多数ANSI VT100序列的格式为ESC
[
,可选地后跟一个数字或由;
分隔的两个数字,后跟一些不是数字或;
的字符。比如
reply = reply.replaceAll("u001B\[[\d;]*[^\d;]","");
或
reply = reply.replaceAll("\e\[[\d;]*[^\d;]",""); // e matches escape character
我认为应该抓住他们中的大多数。还可以单独添加其他情况。(我还没有测试过)
您发布的regex中的一些替代方案以\[
开始,而不是转义字符,这可能意味着您可以删除一些您不应该删除的文本,或者删除控制序列的一部分,但在