regulares funcion expresiones ejemplos comodines caracteres r regex gsub

funcion - Problema de expresiones regulares en gsub



funcion gsub en r (4)

¿Podría por favor intentar seguir y hacerme saber si esto le ayuda?

vec <- c("5f 110y, Fast") gsub(".*,","",vec)

O

gsub("[[:alnum:]]+ [[:alnum:]]+,","",vec)

He definido

vec <- "5f 110y, Fast"

y

gsub("[//s0-9a-z]+,", "", vec)

da " 5f Fast "

Hubiera esperado que diera " Fast ", ya que todo antes de la coma debería coincidir con la expresión regular.

¿Puede alguien explicarme por qué este no es el caso?


Debe tener en cuenta que, en los patrones de expresiones regulares de TRE, no puede usar escapes de expresiones regulares como /s , /d , /w .

Por lo tanto, la expresión regular en su caso, "[//s0-9a-z]+," coincide con 1 o más / , s , dígitos y letras ASCII en minúsculas, y luego una sola "[//s0-9a-z]+,"

Puede usar clases de caracteres POSIX en su lugar, como [:space:] (cualquier espacio en blanco) o [:blank:] (espacios en blanco horizontales):

> gsub("[[:space:]0-9a-z]+,", "", vec) [1] " Fast"

O, use una expresión regular de PCRE con /s perl=TRUE argumento perl=TRUE :

> gsub("[//s0-9a-z]+,", "", vec, perl=TRUE) [1] " Fast"

Para hacer coincidir todos los espacios en blanco de Unicode, agregue (*UCP) verbo PCRE al inicio del patrón: gsub("(*UCP)[//s0-9a-z]+,", "", vec, perl=TRUE) .


Intente una expresión regular diferente:

gsub("[[:blank:][:digit:][:lower:]]+,", "", vec) #[1] " Fast"

O bien, para eliminar el espacio después de la coma,

gsub("[[:blank:][:digit:][:lower:]]+, ", "", vec) #[1] "Fast"


Una solución tidyverse sería utilizar str_replace con su expresión regular original:

library(stringr) str_replace(vec, "[//s0-9a-z]+,", "")