Регулярное выражение в R дает мне TRUE для каждого входа - PullRequest
0 голосов
/ 30 ноября 2018

это мой код:

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.

Однако некоторые тексты соответствуют целому вектору поиска, как вы можете видеть.Я не смог понять, почему это так.Может кто-нибудь объяснить мне, что здесь не так?

1 Ответ

0 голосов
/ 30 ноября 2018

У вас есть "автономная" альтернатива \\b, которая будет соответствовать, если на входе есть слово char.

Вам нужно удалить его и обернуть слова в группу без захвата , чтобы повторить только \b один раз:

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

R демо:

> 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
...