R:Gsub替换模式,跳过替换字符

时间:2018-03-22 15:14:29

标签: r replace gsub

我想在R中使用gsub()函数进行简单的替换。参见示例:

#I want: 
Huiswaard 2 Oost
Huiswaard 1 Zuid
Huiswaard 2 West

#To become:
Huiswaard-2-Oost
Huiswaard-1-Oost
Huiswaard-2-Oost 

通过宏伟的试验方法和错误我试过这个:

data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-.-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-.*-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-(.)-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-\\(\\)-", df)

一切都行不通。我最终得到的东西是:

Huiswaard-.-West

有没有人知道如何使用gsub跳过替换参数中的字符?

1 个答案:

答案 0 :(得分:2)

在正则表达式中,您可以使用括号和反向引用进行分组\\1

data <- gsub('Huiswaard\\s(\\d)\\s>*', "Huiswaard-\\1-", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Zuid" "Huiswaard-2-West"

如果您想更改后缀,您还可以使用\\w+捕获第二个单词,该单词将在空格后捕获1个或多个单词字符。:

data <- gsub('Huiswaard\\s(\\d)\\s\\w+', "Huiswaard-\\1-Oost", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Oost" "Huiswaard-2-Oost"

我使用此备忘单来帮助我理解正则表达式:https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf