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

如何仅用Bash字符串操作与正则去除字符串重复连续字符?

仅用Bash字符串操作与正则去除连续重复字符

Hey there! 我懂你想完全依靠Bash原生的字符串操作和正则表达式,不用sed、awk这类外部工具来去掉字符串里的连续重复字符——比如把var="aabbcc112233"处理成abc123对吧?其实Bash自带的参数扩展就支持正则替换,刚好能搞定这个需求。

先给你直接上可行的实现代码:

var="aabbcc112233"
# 全局替换连续重复的字符为单个字符
result="${var//(.)\1/\1}"
echo "$result"  # 输出结果:abc123

简单解释一下原理:

这里用到的是Bash的模式替换参数扩展,语法${变量//匹配模式/替换内容}里的//表示全局替换(如果只写/就只会替换第一个匹配项)。

  • 正则模式(.)\1:(.)会捕获任意单个字符(存为第一个捕获组),\1引用这个捕获组,所以整个模式匹配的是连续两个相同的字符。
  • 替换内容\1:把连续重复的两个字符替换成单个,全局替换后所有连续重复的字符都会被压缩成单个。

⚠️ 注意:这个特性需要你的Bash版本在4.0及以上,早期版本不支持在参数扩展里使用正则捕获组。可以用bash --version查看当前版本。

如果你之前写的错误代码可以贴出来,我还能帮你具体分析哪里出了问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:17:38