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

如何用单条正则表达式将重复的空格、感叹号、问号替换为单个对应字符

解决方法

你之前的写法不生效的核心原因是[ !?]+仅匹配三类字符的连续序列,没有设置捕获分组,因此替换值$1无法获取到对应匹配内容,最终替换结果和原内容一致。

正确的实现方案如下:

  • 匹配规则:([ !?])\1+
  • 替换值:$1

实现原理

  1. ([ !?]) 为捕获分组,会匹配空格、感叹号、问号三者中的任意一个字符,并将匹配结果存入分组1
  2. \1+ 匹配与分组1内容完全一致的字符,且要求该字符连续出现1次及以上
  3. 整体匹配到的就是某一类目标字符的连续重复序列,替换为$1即可保留单个该字符

代码示例

Java 示例

String rawStr = "这是  测试   内容!!! 请问?? 对不对???";
String result = rawStr.replaceAll("([ !?])\\1+", "$1");
// 输出结果:这是 测试 内容! 请问? 对不对?

JavaScript 示例

const rawStr = "这是  测试   内容!!! 请问?? 对不对???";
const result = rawStr.replace(/([ !?])\1+/g, '$1');
// 输出结果:这是 测试 内容! 请问? 对不对?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:15:01