You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何用正则表达式移除首尾ANSI代码保留中间文本?

移除首尾ANSI控制码的正则方案

适用的正则表达式

在Java的replaceAll方法中,你需要使用的正则字符串是:

"^\\033\\[[0-9;]*m|\\033\\[[0-9;]*m$"

完整代码示例

String text = "\033[1mYO\033[0m"; // 带ANSI粗体控制码的字符串
String plainText = text.replaceAll("^\\033\\[[0-9;]*m|\\033\\[[0-9;]*m$", "");
// 执行后 plainText 的值为 "YO"

正则规则解析

  • ^\\033\\[[0-9;]*m:匹配字符串开头的ANSI控制码:
    • ^ 锚定字符串起始位置
    • \\033 匹配ESC转义字符(Java字符串中需用双反斜杠转义)
    • \\[ 匹配左方括号(转义是因为[在正则中属于特殊元字符)
    • [0-9;]* 匹配任意数量的数字或分号,支持多参数的ANSI码(比如\033[1;31m这类同时控制粗体和颜色的代码)
    • m 匹配控制码的结尾标记
  • | 表示逻辑“或”,用于同时匹配开头和结尾的控制码
  • \\033\\[[0-9;]*m$:匹配字符串结尾的ANSI控制码,$锚定字符串结束位置

边界场景适配

  • 仅开头有ANSI码(如\033[4mTest):移除开头码,保留Test
  • 仅结尾有ANSI码(如Test\033[0m):移除结尾码,保留Test
  • 无ANSI码的纯文本:正则无匹配,直接返回原字符串

内容的提问来源于stack exchange,提问作者ThomasG2201

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:40:21