r中的精确字符串匹配

时间:2015-02-17 07:43:47

标签: regex r string-matching

我在R中遇到精确的字符串匹配。我只需要在搜索字符串中完全匹配:

sentence2 <- "laptop is a great product"
words2 <- c("top","laptop")

我正在尝试这样的事情:

sub(paste(c("^",words2,"$")),"",sentence2)

我需要用空字符串替换笔记本电脑 - 完全匹配(笔记本电脑)但是没有工作......

拜托,能帮助我吗?提前谢谢。

期望的输出:

is a great product

2 个答案:

答案 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"