Kenneth Roy Cabrera Torres
miércoles, 04 de abril de 2018
En las ayudas de R se encuentra los principios del uso de expresiones regulares.
Help on topic 'regex' was found in the following packages:
Package Library
stringr /home/kenneth/R/x86_64-pc-linux-gnu-library/3.4
base /usr/lib/R/library
Using the first match ...
Una expresión regular (RE, siglas en inglés) es un mecanismo que permite seleccionar una cadena o sarta específica de otra cadena.
Existen dos definiciones: expresiones regulares básicas (BRE) y (ERE) expresiones regulares extendidas. El R utiliza por omisión la ERE.
Las funciones más usuales que trabajan con expresiones regulares son:
grep
, regexpr
, gregexpr
, sub
, gsub
y strsplit
.
Los siguientes símbolos son utilizados como metacaracteres o simbolos que implican significados especiales.
. \ | ( ) [] {} ^ $ * + ?
Su significado depende del contexto.
Algunos elementos que no son metacaracteres, pero que se utilizan como una secuencia de “escape”.
\a
como BEL, \e
como ESC, \f
como FF, \n
como LF,
\r
como CR and \t
como TAB.
El caso más simple es encontrar una sarta o cadena específica en una sarta.
texto <- c("Nada, como tu", "Inigualable", "Incomparable")
regexpr("able",texto)
[1] -1 8 9
attr(,"match.length")
[1] -1 4 4
attr(,"useBytes")
[1] TRUE
El resultado depende de la función utilizada.
texto <- c("Nada, como tu", "Inigualable", "Incomparable")
gsub("In","",texto)
[1] "Nada, como tu" "igualable" "comparable"
Una clase de carácter es una lista de caracteres entre
corchetes []
el cual identifica o hace coincidir cualquier
carácter en la lista.
texto <- c("Una sarta","2da sarta")
regexpr("[n]",texto)
[1] 2 -1
attr(,"match.length")
[1] 1 -1
attr(,"useBytes")
[1] TRUE
regexpr("[na]",texto)
[1] 2 3
attr(,"match.length")
[1] 1 1
attr(,"useBytes")
[1] TRUE
texto <- c("Una sarta","2da sarta")
gsub("[n]","",texto)
[1] "Ua sarta" "2da sarta"
gsub("[na]","",texto)
[1] "U srt" "2d srt"
sub("[na]","",texto)
[1] "Ua sarta" "2d sarta"
texto <- c("Una sarta","2da sarta","(3ra) sarta")
grep("[%]",texto)
integer(0)
grep("[%0-9]",texto)
[1] 2 3
grep("[0-9%]",texto)
[1] 2 3
texto <- c("Una sarta","2da sarta","(3ra) sarta")
grep("[U]",texto)
[1] 1
grep("[(]",texto)
[1] 3
grep("[U]",texto)
[1] 1
texto <- c("Una sarta","2da sarta","(3ra) sarta")
regexpr("0-9",texto)
[1] -1 -1 -1
attr(,"match.length")
[1] -1 -1 -1
attr(,"useBytes")
[1] TRUE
regexpr("[0-9]",texto)
[1] -1 1 2
attr(,"match.length")
[1] -1 1 1
attr(,"useBytes")
[1] TRUE
regexpr("[^0-9]",texto)
[1] 1 2 1
attr(,"match.length")
[1] 1 1 1
attr(,"useBytes")
[1] TRUE
direcciones <- c("Cra 24 Nro 15 A 38",
"cra 24 Nro 15 A 38",
"Calle 24 # 15 A 38",
"Kra 24 Nro 15 A 38",
"carrera 8B N 6B Sur 1")
regexpr("[CcKk]ra",direcciones)
[1] 1 1 -1 1 -1
attr(,"match.length")
[1] 3 3 -1 3 -1
attr(,"useBytes")
[1] TRUE
texto <- c("Una sarta","2da sarta","(3ra) sarta")
gsub("[[:digit:]]","",texto)
[1] "Una sarta" "da sarta" "(ra) sarta"
gsub("[[:blank:]]","",texto)
[1] "Unasarta" "2dasarta" "(3ra)sarta"
gsub("[[:alpha:]]","",texto)
[1] " " "2 " "(3) "
gsub("[[:alnum:]]","",texto)
[1] " " " " "() "
texto <- c("Una sarta","2da sarta","(3ra) sarta")
gsub("[[:blank:]]","",texto)
[1] "Unasarta" "2dasarta" "(3ra)sarta"
gsub("[:blank:]","",texto)
[1] "U srt" "2d srt" "(3r) srt"
gsub("[[:digit:]]+[[:alpha:]]+","",texto)
[1] "Una sarta" " sarta" "() sarta"
nomVars <- c("MO...en..mg","Temp...C","O.....m..")
gsub("\\.+",".",nomVars)
[1] "MO.en.mg" "Temp.C" "O.m."
gsub("\\.+$","",nomVars)
[1] "MO...en..mg" "Temp...C" "O.....m"
s <- c(" nada ","Nada "," Nada"," nADA","NADA")
gsub("^ +","",s)
[1] "nada " "Nada " "Nada" "nADA" "NADA"
gsub(" +$","",s)
[1] " nada" "Nada" " Nada" " nADA" "NADA"
gsub("^ +| +$","",s)
[1] "nada" "Nada" "Nada" "nADA" "NADA"