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

如何匹配并移除双括号[[]]内的所有空格?

移除双括号[[]]内空格的可行方案

核心逻辑

你之前的正则只匹配括号内全是空格的情况,自然找不到内容。正确的做法是先匹配整个[[...]]块,再单独处理块内的内容——去掉里面所有空格后,再重新拼回双括号。

Java实现代码

Java 9+ 简洁写法

String input = "text text [[ ia asd ]] [[asdasd]] dfgd dfaf sddgsd [[sss aaa]]";
String result = input.replaceAll("\\[\\[(.*?)\\]\\]", m -> "[[" + m.group(1).replaceAll("\\s+", "") + "]]");
System.out.println(result);

Java 8及以下兼容写法

String input = "text text [[ ia asd ]] [[asdasd]] dfgd dfaf sddgsd [[sss aaa]]";
Pattern pattern = Pattern.compile("\\[\\[(.*?)\\]\\]");
Matcher matcher = pattern.matcher(input);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    String cleanedInner = matcher.group(1).replaceAll("\\s+", "");
    matcher.appendReplacement(sb, "[[" + cleanedInner + "]]");
}
matcher.appendTail(sb);
String result = sb.toString();
System.out.println(result);

关键说明

  • 正则\\[\\[(.*?)\\]\\]:用非贪婪捕获(.*?)精准匹配单个[[到最近]]之间的内容,不会跨多个双括号块。
  • 替换时,m.group(1)提取括号内的原始内容,replaceAll("\\s+", "")移除所有空白字符(包括空格、制表符等;如果只想移除空格,把\\s+换成 即可)。

测试结果

输入:text text [[ ia asd ]] [[asdasd]] dfgd dfaf sddgsd [[sss aaa]]
输出:text text [[iaasd]] [[asdasd]] dfgd dfaf sddgsd [[sssaaa]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:45:29