首页 > 解决方案 > R中的正则表达式给我每个输入的TRUE

问题描述

这是我的代码:

searchvector <- c("good", "wonderful", "bad", "great", "wonder")


> grepl("wonder", searchvector)
[1] FALSE  TRUE FALSE FALSE  TRUE
> grepl(paste0("\\b", "wonder", "\\b"), searchvector)
[1] FALSE FALSE FALSE FALSE  TRUE
> grepl(paste0("\\baudible\\b|\\b|\\bthalia\\b"), searchvector)
[1] TRUE TRUE TRUE TRUE TRUE

我有一个带有文本的大向量,我想在其中分离每个单词来计算情绪分数。我只想匹配确切的字符串,我设法用\\b.

但是,如您所见,某些文本与整个搜索向量匹配。我无法弄清楚为什么会这样。谁能解释我这里出了什么问题?

标签: rregextext-mining

解决方案


如果输入中有单词 char,您有一个“独立”\\b替代方案将匹配。

您需要将其删除,并将单词包装在非捕获组中以仅重复\b一次:

grepl(paste0("\\b(?:audible|thalia)\\b"), searchvector) 

演示:

> searchvector <- c("good", "wonderful", "bad", "great", "wonder")
> grepl(paste0("\\b(?:audible|thalia)\\b"), searchvector)
[1] FALSE FALSE FALSE FALSE FALSE
> searchvector <- c("good", "wonderful", "bad", "great", "wonder", "thalia item")
> grepl(paste0("\\b(?:audible|thalia)\\b"), searchvector)
[1] FALSE FALSE FALSE FALSE FALSE  TRUE

推荐阅读