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