Expresiones regulares en R

SUBSTRING – Seleccionar un substring

texto <- "¡Hola Mundo!"
substring(texto, 7,11)
[1] "Mundo"
substring(texto, 7, 11) <- "Pacos"  #Sustituye la cadena del substring por la asignada
[1] "¡Hola Pacos!"

NCHAR – Longitud de la cadena

nchar(texto)
 [1] 12

PASTE – Concatenar cadenas

paste("¡Adiós", "Mundo!")
 [1] "¡Adiós Mundo!"
paste("¡Adiós", "Mundo!", sep="_")
 [1] "¡Adiós_Mundo!"

SPRINTF – Imprimir cadenas de texto con números

i <- 9
 sprintf("El cuadrado de %d es %d", i, i^2)
 [1] "El cuadrado de 9 es 81"

STRSPLIT – Separar una cadena en partes

strsplit("Me/gusta/programar/en/R", "/")
 [[1]]
 [1] "Me"        "gusta"     "programar" "en"        "R"

CHARTR – Sustituir caracteres en cadena

chartr("o", "a", "¡Hola Mundo!")
 [1] "¡Hala Munda!"

GREPL – Determina si una sub-cadena pertenece a una cadena

chars <- "testo" 
value <- "est"
grepl(value, chars)
[1] TRUE

GREPL (Multiple) – Determina alguna sub-cadena pertenece a una cadena

valores <- c("rojo","roja" ,"colorado")
texto <- c("La sangre es roja", "El cielo es azul", "Me enrojo al verte")
grepl(paste(valores, collapse = "|"), texto)
[1]  TRUE FALSE  TRUE

GREP – Encuentra patrones de la expresión regular en la cadena

musicos <- c("Handel","Mendel", "Haendel", "Händel", "Handemore", "handel")
 patron <- "H(a|ä|ae)ndel"
 grep(patron, musicos)
 [1] 1 3 4

REGEXPR – Encuentra en índice donde se encuentrala primera aparición de la expresión regular en la cadena

regexpr(patron, musicos)
 [1]  1 -1  1  1 -1 -1
attr(,"match.length")
 [1]  6 -1  7  6 -1 -1

GREGEXPR – Encuentra en índice donde se encuentrala primera aparición de la expresión regular en la cadena

gregexpr(patron, "Georg Friedrich Händel, en inglés George Frideric Handel fue un compositor alemán.")
 [[1]]
 [1] 17 51
 attr(,"match.length")
 [1] 6 6

STRAPPLYC- Encuentra en una cadena los elementos que cumplan la expresión regular

install.packages("gsubfn")    
library(gsubfn)
strapplyc("Encuentra el 2017 como año", "[12]\\d{3}")
[[1]]
[1] "2017"

GSUB- Sustituye en una cadena los elementos que cumplan la expresión regular por otro que se indique

gsub("[12]\\d{3}", "DOS MIL DIECISIETE", "Cambia el año 2017")
[1] "Cambia el año DOS MIL DIECISIETE"
Sintasis Descripción Ejemplo
\\d Dígito del 1 al 9 0,1,2 … 9
\\D Distinto de dígito A, a, $, )
\\s Espacio
\\S Distinto de espacio
\\w Palabra A, B, C, d, e, f, …
\\W Distinto de palabra _, &, #, …
\\t Tabulador
\\n Salto de linea
^ Comienzo de cadena ^C -> Casa, Coche, …
$ Fin de cadena s$ -> Casas, coches, …
\ Caracteres especiales. \\, \+
| O lógico OR (v|b)aca -> vaca o baca
Cualquier carácter excepto \n
[ab] O lógico OR a, b
[^ab] Distintos de ab c, d, e, f, …
[0-9] Todos los dígitos 0, 1, 2, 3, …
[A-Z] Todas las letras mayúsculas A, B, C, …
[a-z] Todas las letras minúsculas a, b, c, …
[A-z] Todas las letras A, B, C, d, e, f, …
a+ Letra “a” al menos una vez a, aa, aaa, …
a* Letra “a” cero o más veces a, , aa, aaa, …
a? Letra “a” cero o una vez a
a{4} Buscar 4 “a” seguidas aaaa
a{2,4} Buscar entre 2 y 4 “a” seguidas aa, aaa, aaaa
a{2,4}? Buscar entre 2 y 4 “a” seguidas como mucho una vez aa, aaaa, …
a{2,} Busca a partir de 2 “a” seguidas aa, aaa, aaaa, aaaa, …
[:alnum:] Caracteres alfanuméricos [:alpha:] y [:digit:] A, B, c, d, 1, 2, …
[:alpha:] Caracteres: [:lower:] y [:upper:] A, B, c, d, …
[:blank:] Caracteres blancos Espacio, Tabulador, …
[:cntrl:] Caracteres de control
[:digit:] Dígitos 0, 1, 2, 3, …
[:graph:] Caracteres gráficos [:alnum:] y [:punct:] A, B, c, d, 1, 2, #, %, …
[:lower:] Todas las letras minúsculas a, b, c, …
[:print:] Caracteres gráficos [:alnum:] y [:punct:] A, B, c, d, 1, 2, #, %, …
[:punct:] Caracteres de puntuación ! ” # $ % & ‘ ( ) * + , – . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
[:space:] Caracteres de espaciado Espacio, tabulador, nueva linea, …
[:upper:] Todas las letras mayúsculas A, B, C, …
[:xdigit:] Dígitos hexadecimales 0, 1, 2, 3, A, B, e, f, …

Otros artículos que pueden ser de interés:

Autor: Diego Calvo