去除字符串中重复超过两次的字符

5

我有这段文本:

F <- "hhhappy birthhhhhhdayyy"

我想去除重复字符,我尝试了以下代码

https://dev59.com/mWgu5IYBdhLWcg3wrIuR#11165145

它可以工作,但如果字符重复超过2次,我需要将其删除,如果重复2次,则保留。

因此,我期望的输出是

"happy birthday"

任何帮助?
1个回答

5

尝试使用sub,并使用模式(.)\\1{2,}

F <- ("hhhappy birthhhhhhdayyy")
gsub("(.)\\1{2,}", "\\1", F)

[1] "happy birthday"

正则表达式的解释:

(.)          match and capture any single character
\\1{2,}      then match the same character two or more times

我们仅替换与单个匹配字符相符的内容。数量\\1表示sub中第一个捕获组。


1
只需要使用 gsub("(.)\\1{2,}", "\\1", F) 或者 gsub("(.)\\1\\1+", "\\1", F) 就可以了 ;-) - Cath
2
@Cath 如果按照原帖所说,我们只想替换出现在三个或更多字母系列中的字母。你的建议会在两个或更多字母上进行替换。 - Tim Biegeleisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接