如何删除R中的多个连续特殊字符?

时间:2016-10-28 13:52:43

标签: r regex special-characters

如何更改以下字符串,使其不包含R中的多个连续问号/其他特殊字符?

"Nice one!!!"

应该成为

"Nice one!"

"Whazzup????!!"

应该成为

"Whazzup?!"

我尝试了多个正则表达式命令但没有成功。显然我可以用一个问号替换两个问号,但我希望它与特殊字符的数量无关。

这与标记的副本不同,因为它处理特殊字符。

2 个答案:

答案 0 :(得分:5)

一个简单直接的解决方案是使用gsub作为标点符号正则表达式:

x <- "Whazzup????!!"
gsub('([[:punct:]])\\1+', '\\1', x)
[1] "Whazzup?!"

答案 1 :(得分:3)

我们可以使用gsub

gsub("([[:punct:]])\\1+", "\\1", str1)
#[1] "Nice one!" "Whazzup?!"

数据

str1 <- c("Nice one!!!", "Whazzup????!!")