regular regexmatch regex r grepl

regexmatch - regular expression using r



Completa la coincidencia de palabras usando grepl en R (3)

Considere el siguiente ejemplo:

> testLines <- c("I don''t want to match this","This is what I want to match") > grepl(''is'',testLines) > [1] TRUE TRUE

Sin embargo, lo que quiero es que solo coincida "es" cuando está solo como una sola palabra. Al leer un poco de documentación de Perl, parecía que la forma de hacerlo es con / b, un ancla que se puede usar para identificar lo que viene antes y después del patrón, es decir, / bword / b coincide con ''palabra'' pero no ''espada ''. Así que probé el siguiente ejemplo, con el uso de la sintaxis de Perl establecida en ''TRUE'':

> grepl(''/bis/b'',testLines,perl=TRUE) > [1] FALSE FALSE

La salida que estoy buscando es FALSE TRUE .


"/ <" es otra secuencia de escape para el comienzo de una palabra, y "/>" es el final. En las cadenas R necesitas doblar las barras invertidas, así que:

> grepl("//<is//>", c("this", "who is it?", "is it?", "it is!", "iso")) [1] FALSE TRUE TRUE TRUE FALSE

Tenga en cuenta que esto coincide con "es!" pero no es "iso".


Muy simplista, empareja en un espacio líder:

testLines <- c("I don''t want to match this","This is what I want to match") grepl('' is'',testLines) [1] FALSE TRUE

Hay mucho más que esto para las expresiones regulares, pero esencialmente el patrón debe ser más específico. Lo que necesitará en casos más generales es un tema enorme. Ver? Regex

Otras posibilidades que funcionarán para este ejemplo:

grepl('' is '',testLines) [1] FALSE TRUE grepl(''//sis'',testLines) [1] FALSE TRUE grepl(''//sis//s'',testLines) [1] FALSE TRUE


necesita doble escape para pasar escape a expresiones regulares:

> grepl("//bis//b",testLines) [1] FALSE TRUE