Saltar al contenido

Regex para corchetes en R

Te damos la bienvenida a nuestra página web, aquí hallarás la resolución a lo que andabas buscando.

Solución:

deberías habilitar perl = TRUEentonces puede usar una sintaxis similar a la de Perl, que es más sencilla (en mi humilde opinión):

gsub("[\[\]$]","",mystring, perl = TRUE)

O bien, puede utilizar la “ubicación inteligente” al colocar ] al comienzo de la expresión entre paréntesis ([ is not special inside it, there is no need escaping [ there):

gsub("[][$]",",micadena)

Ver demostración

Resultado:

[1] "abcde"

Más detalles

Él [...] construcción se considera un expresión de paréntesis por el motor TRE regex (utilizado de forma predeterminada en las funciones base R regex – (g)sub, grep(l), (g)regexpr – cuando se usa sin perl=TRUE), que es una construcción de expresión regular POSIX. Las expresiones de paréntesis, a diferencia de las clases de caracteres en los motores de expresión regular NFA, no admiten secuencias de escapees decir, el char se trata como un carácter de barra invertida literal dentro de ellos.

Por lo tanto, la [[]] en un TRE coincidencias de expresiones regulares o [ char (with the [[] parte que en realidad es igual a [[]) y luego un ]. Entonces, coincide ] o [] subcadenas, solo eche un vistazo a gsub("[\[\]]", "", "[]\]ab]") demostración – sale ab] porque [] y ] se emparejan y eventualmente se eliminan.

Tenga en cuenta que los términos Expresiones de paréntesis POSIX y Clases de caracteres NFA se usan con el mismo significado que se usa en https://www.regular-expressions.info, no es un estándar, pero es necesario diferenciar entre los dos.

yo esquivaría [ab] sintaxis y uso (a|b). Además de trabajar, también puede ser más legible:

gsub("(\[|\]|\$)","",mystring)

Comentarios y valoraciones

Al final de todo puedes encontrar las notas de otros creadores, tú igualmente tienes la habilidad insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *