在R语言中实现精确字符串匹配

3

我在R语言中遇到了精确字符串匹配的问题。我需要在句子中只找到与搜索字符串完全匹配的内容:

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

我尝试了类似于这样的东西:
sub(paste(c("^",words2,"$")),"",sentence2)

我需要将字符串中的“laptop”替换为空字符串,但只能进行精确匹配,而现在无法进行该操作。

请问您能否帮忙解决此问题?谢谢!

期望输出:

is a great product
2个回答

3
你可以尝试:
gsub(paste0("^",words2," ",collapse="|"),"",sentence2)
#[1] "is a great product"

paste0("^",words2," ",collapse="|") 的结果是 "^top |^laptop ",意思是“字符串开头要么是以 'top' 为开头并跟着一个空格,要么是以 'laptop' 为开头并跟着一个空格”。


2
你也可以使用paste0("^",words2," ", collapse = "|")代替两次paste - Rentrop
2
@Floo0,确实是这样!谢谢,我会编辑我的回答! :-) - Cath

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接