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

如何用单条正则表达式语句实现空格转下划线并移除括号?

嘿,这事儿很简单!你完全可以把两步操作合并成一行代码,甚至有两种实用的实现方式:

方式一:链式调用(最直观且兼容所有Java版本)

直接把两个replaceAll调用连起来,执行逻辑和你原来的两步完全一致:

abc = abc.replaceAll("\\s+", "_").replaceAll("[()\\[\\]{}]", "");

先把所有连续空格替换成下划线,再一次性移除所有圆括号、方括号、花括号(不管是否匹配成对)。

方式二:单个replaceAll调用(Java 9+适用)

如果你想用一个replaceAll搞定,可以利用Java 9新增的函数式替换逻辑,通过正则匹配两种模式后返回对应替换值:

abc = abc.replaceAll("\\s+|[()\\[\\]{}]", matchResult -> 
    matchResult.group().matches("\\s+") ? "_" : ""
);

这个正则用|分隔了两种匹配规则(连续空格/各类括号),再通过lambda判断匹配内容:如果是空格就替换成下划线,是括号就直接移除。

验证你的测试用例

  • 输入hello world (English) → 先转为hello_world_(English) → 最终得到hello_world_English
  • 输入hello world ((((English → 先转为hello_world_((((English → 最终得到hello_world_English
    完全符合你的预期输出!

另外提一句,你之前尝试的\\p{P}会移除所有标点符号,范围太宽泛了,直接指定需要移除的括号字符会更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:16:57