Download Expresiones regulares i scrapping

Document related concepts

Expresión regular wikipedia , lookup

Búsqueda de patrones wikipedia , lookup

Codificación aritmética wikipedia , lookup

Cadena de caracteres wikipedia , lookup

Código alfanumérico wikipedia , lookup

Transcript
Expresiones regulares i
scrapping
Miquel Serrabassa
José Manuel Gutiérrez
@labsdata @naciodigital
El concepto
Una expresión regular es una
secuencia de caracteres que
forma un patrón de búsqueda.
¿Para qué sirve?
Sirve para la búsqueda de
patrones dentro de textos
para su tratamiento, ya sea
sustitución, búsqueda o
validación.
Por ejemplo, podrías
encontrar...
¿Qué podría buscar?
1.
2.
3.
4.
5.
6.
Nombres o patrones de letras
Números de cuenta bancaria
Direcciones de correo
electrónico
Cifras absolutas o
porcentajes
Códigos postales
...
1.
Y… ¿Cómo lo hago?
2.
3.
Editores de texto avanzados:
Notepad++, PSPad, Brackets,
Atom...
Lenguajes de programación:
PHP, C++, .Net, Javascript, R,
Perl, Python, ...
...
Some people, when confronted with a problem, think
“I know, I'll use regular expressions.”
Now they have two problems.
Jamie Zawinski
[\w\.\-\+]+@[\w]+[\w-]*\.[a-zA-Z0-9]+[\.a-zA-Z0-9]+
Empezamos!
http://regexr.com/3dcb0
Descripción de las expresiones regulares
Letras o
números
Concordancia exacta
El punto
.
Cualquier carácter
Barra inversa
\
\w Cualquier carácter
alfanumérico
\d Cualquier dígito (0-9)
\s Espacio en blanco
\n Salto de línea
\r para retorno de carro
\t Tabulador
Negando la barra
inversa
\
\W Todo excepto caracteres
alfanuméricos
\D Cualquier carácter que
no sea un dígito
\S Cualquier carácter que
no sea un espacio en
blanco
La cadena empieza por el
símbolo que siga a ^
Inicio
^
^\w
Para usar en matrices de datos,
comprobando inicios coincidentes en cada
elemento
Fin
$
La cadena termina con el
símbolo que precede a $
\w$
Para usar en matrices de datos
comprobando finales coincidentes en cada
elemento.
Conjunción - “or”
|
En a|b, encuentra a o b.
Búsqueda
múltiple
[...]
Combinaciones de símbolos
[abcd] Encuentra a,b,c o d
[a-d] Encuentra a,b,c o d
[a-cp-z] Encuentra dos
rangos diferentes
[a-zA-Z0-9] Encuentra
cualquier número o letra
Búsqueda
múltiple inversa
El símbolo ^ dentro de []
busca cualquier carácter
no incluido en la
expresión.
[^...]
[^a-d]
{X} coincide con el
símbolo que le precede X
veces. r{2}
Cuantificadores
{X}
{X,} coincide con el
símbolo que le precede
almenos X veces. r{2,}
{X,Y} coincide con el
símbolo que entre X e Y
veces. r{2,3}
+ Encuentra el símbolo
precedente una o más veces
Cuantificadores
II
*, + y ?
* Encuentra el símbolo
precedente cero o más
veces.
? Encuentra el símbolo
precedente cero o una vez
ac+ {1,} → ac,acc,accc..
ac* {0,} → a,ac,acc...
ac? {0,1} → a y ac
Agrupación
(...)
Incluye un grupo de
símbolos dentro de la
expresión
(ac)+ ac,acac,acacac
Referenciales
\#
donde # es un número.
Coincide con la expresión
entre paréntesis que se
encuentre en la posición #
(na)\w+\1
Casos prácticos
Nombres
maria|jose|juan
gmail|hotmail
Códigos
postales
?
DNI
[0-9]{1,2}((\.[\d]{3}){2}|
[0-9]{6})[a-zA-Z]
Correos
electrónicos
[\w\.\-\+]+@[\w]+[\w-]*\.
[a-zA-Z0-9]+[\.a-zA-Z0-9]+
Números de cuenta
IBAN
[a-zA-Z]{2}[0-9]{2}[a-zAZ0-9]{4}[0-9]{7}([a-zA-Z09]?){0,16}
¿Jugamos?
Regex Golf
http://regex.alf.nu/