Google Sheets中无需反向引用匹配连续重复字符的方法
在Google Sheets中替换连续重复字符(无反向引用)
由于Google Sheets采用的RE2正则引擎不支持反向引用,没法直接用(.)\1+这类常规写法,这里给你两个可行的解决方案:
方案一:用Google Apps Script写自定义函数(最简便)
这是最直接高效的方式,脚本里可以用支持反向引用的JavaScript正则:
- 打开你的Google表格,点击菜单栏「扩展程序」→「Apps 脚本」
- 删除编辑器里的默认代码,粘贴以下内容:
function REMOVE_DUPLICATE_CHARS(input) { if (typeof input !== 'string') return input; return input.replace(/(.)\1+/g, '$1'); }
- 保存脚本(随便起个项目名,比如「字符去重工具」),返回表格
- 在目标单元格输入公式:
=REMOVE_DUPLICATE_CHARS(A1)(把A1替换成你要处理的单元格)
这个函数会自动将所有连续重复的字符替换为单个,比如处理ippeʔɒɒf ɒʈ会直接得到ipeʔɒf ɒʈ。
方案二:用内置函数组合(无需脚本)
如果不想用脚本,可以通过拆分、对比、合并的思路实现,只是写法相对繁琐:
假设待处理字符串在A1单元格,使用以下数组公式(输入后按Ctrl+Shift+Enter,新版表格直接回车即可):
=TEXTJOIN("", TRUE, ARRAYFORMULA(IF(TRANSPOSE(SPLIT(REGEXREPLACE(A1,"(.)","$1|"),"|"))=OFFSET(TRANSPOSE(SPLIT(REGEXREPLACE(A1,"(.)","$1|"),"|")),1,0), "", TRANSPOSE(SPLIT(REGEXREPLACE(A1,"(.)","$1|"),"|")))))
原理是先把字符串拆成单个字符的数组,对比每个字符与下一个是否相同,只保留不重复的字符,最后合并成新字符串。但这个公式对超长字符串效率不高,不如自定义函数实用。
内容的提问来源于stack exchange,提问作者bigyihsuan
相关产品推荐
相关产品推荐

