我想在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跳过替换参数中的字符?
答案 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