string = c("Apple", "apples", "applez")
grep("Apple", string)
Cela me donnerait l'index pour les trois éléments dans string
. Mais je veux une correspondance exacte sur le mot "Apple" (c'est-à-dire que je veux juste que grep()
renvoie l'index 1).
Utiliser la limite de mots \b
qui correspond à un caractère entre Word et non-Word,
string = c("Apple", "apples", "applez")
grep("\\bapple\\b", string)
[1] 1
OU
Utilisez des ancres. ^
Affirme que nous sommes au début. $
Affirme que nous sommes à la fin.
grep("^Apple$", string)
[1] 1
Vous pouvez stocker la regex dans une variable, puis l’utiliser comme ci-dessous.
pat <- "\\bapple\\b"
grep(pat, string)
[1] 1
pat <- "^Apple$"
grep(pat, string)
[1] 1
Mise à jour:
paste("^",pat,"$", sep="")
[1] "^Apple$"
string
[1] "Apple" "Apple:s" "applez"
pat
[1] "Apple"
grep(paste("^",pat,"$", sep=""), string)
[1] 1
Pour une correspondance exacte, il est logique d'utiliser ==
. De plus, cela sera plus rapide que grep()
, et est évidemment beaucoup plus facile.
which(string == "Apple")
# [1] 1