Cómo usar grep () para encontrar una coincidencia exacta

string = c("apple", "apples", "applez") grep("apple", string) 

Esto me daría el índice de los tres elementos en la string . Pero quiero una coincidencia exacta con la palabra “manzana” (es decir, solo quiero que grep() devuelva el índice 1).

Use un límite de palabra \b que coincida con un carácter entre una palabra y un carácter que no sea una palabra,

 string = c("apple", "apples", "applez") grep("\\bapple\\b", string) [1] 1 

O

Usa anclajes. ^ Afirma que estamos en el comienzo. $ Afirma que estamos al final.

 grep("^apple$", string) [1] 1 

Puede almacenar la expresión regular dentro de una variable y luego usarla como se muestra a continuación.

 pat <- "\\bapple\\b" grep(pat, string) [1] 1 pat <- "^apple$" grep(pat, string) [1] 1 

Actualizar:

 paste("^",pat,"$", sep="") [1] "^apple$" string [1] "apple" "apple:s" "applez" pat [1] "apple" grep(paste("^",pat,"$", sep=""), string) [1] 1 

Para una coincidencia exacta, tiene más sentido usar == . Además, esto será más rápido que grep() , y obviamente es mucho más fácil.

 which(string == "apple") # [1] 1