R - 仅将多次出现的字符替换为一次。正则表达式

R - Replace Multiple Ocurrences of character by only one . REGEX

我有以下字符串

str<-"Actividades   Financieras && Bancarias #### 23"

我想删除多个空格、多个 && 和多个 #。我想得到:

Actividades Financieras & Bancarias # 23

到目前为止我已经试过了

gsub("[^A-z0-9]+"," ",string)

我得到

"Actividades Financieras Bancarias 23"

并且它会删除所有 # 和 &。

有没有办法保留一个字符。

谢谢。

您可以使用

string <- "Actividades   Financieras && Bancarias #### 23"
gsub("([#&\s])\1+", "\1", string, perl=TRUE)
# => [1] "Actividades Financieras & Bancarias # 23"

参见regex demo and an online R demo

详情

  • ([#&\s]) - 捕获组 1 匹配 #& 或空格
  • \1+ - 与它匹配 1 次或多次的第 1 组值的反向引用(由于 + 量词)。

匹配被替换为捕获字符的单个匹配项( 占位符引用替换模式中的第 1 组值)。