我在R中遇到精确的字符串匹配。我只需要在搜索字符串中完全匹配:
sentence2 <- "laptop is a great product"
words2 <- c("top","laptop")
我正在尝试这样的事情:
sub(paste(c("^",words2,"$")),"",sentence2)
我需要用空字符串替换笔记本电脑 - 完全匹配(笔记本电脑)但是没有工作......
拜托,能帮助我吗?提前谢谢。
期望的输出:
is a great product
答案 0 :(得分:3)
您可以尝试:
gsub(paste0("^",words2," ",collapse="|"),"",sentence2)
#[1] "is a great product"
paste0("^",words2," ",collapse="|")
的结果是"^top |^laptop "
,这意味着“在字符串开头的'top'后面跟一个空格或者'string'在字符串的开头跟着一个空格”。
答案 1 :(得分:2)
如果您想匹配整个单词,则可以使用\\b
来匹配单词边界。
gsub(paste0('\\b', words2, '\\b', collapse='|'), '', sentence2)
## [1] " is a great product"
如果要替换相邻的空格,也可以在模式中添加可选的空格。
gsub(paste0('\\s*\\b', words2, '\\b\\s*', collapse='|'), '', sentence2)
## [1] "is a great product"