07 Patrones Regex 01
07 Patrones Regex 01
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
Primeras lecciones de Expresiones Regulares
inicio de clases
Una definición
sencilla
Necesario
conocer esto:
tablas ASCII
8 de octubre de 2019
Volviendo a
las regex
Referencias
Outline
Primeras
lecciones de
Expresiones
Regulares
1 Temario de la clase
David Pineda
Osorio
Temario de la
2 Registrar inicio de clases
clase
Registrar
inicio de clases
3 Una definición sencilla
Una definición
sencilla
Decimal,
4 Decimal, hexadecimal y binario
hexadecimal y
binario
Volviendo a
las regex
6 Volviendo a las regex
Referencias
7 Referencias
¿Qué veremos en esta clase?
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Una marca en la línea de comandos: con nombre de
clase
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la Para poder realizar una búsqueda que tenga un mayor contexto y
clase
precisión, es posible añadir más texto a la seña que nos permita
Registrar
inicio de clases mejorar la referencia.
Una definición Recomiendo añadir, al número de la clase, la seña relacionada al
sencilla
Decimal,
nombre de la clase, que en este ca22174so sería regex_01.
hexadecimal y
binario echo "CLASE_07::regex_01"
Necesario
conocer esto: Anota en tu cuaderno la fecha y la seña CLASE_07::regex_01
tablas ASCII
Volviendo a
las regex
Referencias
Trabajar con textos
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
Para trabajar con textos o cadenas de textos, en algún momento te
inicio de clases encontrarás con la necesidad de utilizar estas expresiones regulares
Una definición
sencilla
que permitirán potenciar las búsquedas, la edición de textos, la
Decimal, comparación con otros textos, encontrar patrones definidos genéricos,
hexadecimal y
binario etc.
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
¿Qúe podemos buscar o patrones a reconocer?
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
Es una forma expresiva de generalizar búsqueda y reconocimiento de
clase patrones, es decir, por ejemplo:
Registrar
inicio de clases Si necesito buscar todas las palabras que comiencen con la letra
Una definición
sencilla
d
Decimal, Si necesito buscar cadenas de texto con números
hexadecimal y
binario
Si necesito encontrar palabras de largo 5
Necesario
conocer esto:
tablas ASCII
etcétera
Volviendo a
las regex
Referencias
Lo más básico a entender
Primeras
lecciones de
Las regex se basan en agrupar las posibilidades que pueda tener una
Expresiones
Regulares
cadena de texto posicionalmente. Es decir, cada caracter tiene una
posición y si este pertenece a la expresión en la posición
David Pineda
Osorio correspondiente se avanza en la verificación del siguiente.
Temario de la
clase
Registrar
inicio de clases
Una definición
sencilla
Decimal,
hexadecimal y
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Un ejercicio sobre la primera regex
Primeras
lecciones de
Expresiones
Regulares Pertenecerán estas palabras al conjunto que describe la regex
David Pineda
Osorio [amp][ab][mpu][áe]l[oa]
Temario de la
clase Pregunta, ¿está completa la expresión? ¿Qué le faltaría?
Registrar
inicio de clases martirio
Una definición
sencilla madre
Decimal,
hexadecimal y papá
binario
Necesario
mamá
conocer esto:
tablas ASCII josefina
Volviendo a
las regex
abuelando
Referencias abuelita
abuela
Cómo se almacena la información
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Toda la información que maneja un computador se alamacena y
Temario de la comunica de manera binaria {0,1}, expresamente un conjunto de
clase
ellos. En el caso de cada caracter, como a o z o lo que sea, son la
Registrar
inicio de clases representación gráfica de un valor binario.
Una definición
sencilla
Ahora bien, con el fin de mejorar el despliegue de información un
Decimal,
conjunto de valores binarios puede ser representado también como un
hexadecimal y
binario
hexadecimal.
Necesario Hexadecimal es una forma de expresión numérica para contar en
conocer esto:
tablas ASCII ciclos de 16 valores {0,1,. . . 15}. Que se representan según la tabla
Volviendo a siguiente
las regex
Referencias
Representación hexadecimal
Primeras
lecciones de Decimal Hexadecimal Binario
Expresiones
Regulares 0 0 0000
David Pineda 1 1 0001
Osorio
2 2 0010
Temario de la
clase
3 3 0011
Registrar
4 4 0100
inicio de clases
5 5 0101
Una definición
sencilla 6 6 0110
Decimal, 7 7 0111
hexadecimal y
binario 8 8 1000
Necesario 9 9 1001
conocer esto:
tablas ASCII 10 A 1010
Volviendo a
las regex
11 B 1011
Referencias
12 C 1100
13 D 1101
14 E 1110
15 F 1111
Conversiones numéricas de base
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Decimal,
Si deseamos convertir un número definido en una base decimal (100)
hexadecimal y
binario
a un binario, podemos realizar lo siguiente.
Necesario
conocer esto:
echo "ibase=A;obase=2;100" | bc
tablas ASCII
Volviendo a
las regex
Referencias
Conocer más de bc
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
La letra A quiere decir que es base decimal. El parámetro de ibase y
clase
de obase se definen en función de los números hexadecimales.
Registrar
inicio de clases Además
Una definición
sencilla ibase quiere decir base input
Decimal,
hexadecimal y
obase quiere decir base output
binario
Necesario
Por lo tanto, desde un número binario 11001110 necesitamos que
conocer esto:
tablas ASCII
ibase=2, y la salida como hexadecimal, obase=F+1.
Volviendo a
las regex
Referencias
Convertir los siguientes números
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Los siguientes números a las otras dos bases (si es decimal, a
hexadecimal y binario)
Temario de la
clase
10 (decimal)
Registrar
inicio de clases 0101011101 (binario)
Una definición
sencilla 64 (hexadecimal)
Decimal,
hexadecimal y 386 (decimal)
binario
Necesario
4555 (hexadecimal)
conocer esto:
tablas ASCII 111 (binario)
Volviendo a
las regex 11111111 (binario)
Referencias
Crear una tabla de conversión
Primeras
lecciones de
Expresiones
Regulares
David Pineda
De la siguiente manera, para completar el cambio de cada número, se
Osorio siguiere realizar en el cuaderno una tabla similar.
Temario de la
clase A F+1 2
Registrar
inicio de clases
Decimal Hexadecimal Binario
Una definición 10
sencilla
0101011101
Decimal,
hexadecimal y 64
binario
386
Necesario
conocer esto: 455
tablas ASCII
Volviendo a
111
las regex 11111111
Referencias
El texto es la representación de un valor binario
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Son las tablas que relacionan un número, con un valor hexadecimal y
Registrar
un carácter humanamente legible. Es un estándar occidental cuyo
inicio de clases
acrónimo es ASCII
Una definición
sencilla Utiliza 7 bits (128 posibilidades) y uno de paridad. Nos permite
Decimal, decirle al computador que una letra (o carácter) se está ocupando, el
hexadecimal y
binario computador toma esta señal y la traduce a un valor binario en byte.
Necesario Los primeros 32 valores representan carácteres de control
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Valores de las letras del alfabeto
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
decimal hexadecimal caracter
Registrar
inicio de clases 65d 41h A
Una definición
sencilla
90d 5Ah Z
Decimal,
97d 61h a
hexadecimal y
binario
122d 7Ah z
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Valores numéricos
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
inicio de clases decimal hexadecimal caracter
Una definición 48d 30h 0
sencilla
57d 39h 9
Decimal,
hexadecimal y
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Caracteres de uso común
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
decimal hexadecimal caracter
Temario de la
clase 64d 40h @
Registrar 123d 7Bh {
inicio de clases
124d 7Ch
Una definición
sencilla 125d 7Dh }
Decimal,
hexadecimal y
91d 5Bh [
binario 92d 5Ch /
Necesario
conocer esto:
93d 5Dh ]
tablas ASCII
36d 25h $
Volviendo a
las regex
Referencias
Ejercicios de números a ASCII
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
¿Qué letras o caracter serían los siguientes valores?
Temario de la
"33"
clase
"66"
Registrar
inicio de clases
"89"
Una definición
sencilla "12"
Decimal,
hexadecimal y "24"
binario
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
inicio de clases Considera el uso de la expresión
Una definición
sencilla echo "Q"|xxd
Decimal,
hexadecimal y
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Un archivo en binario o hexadecimal
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Volviendo a
las regex
Referencias
Tabla de regex generales
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Registrar
inicio de clases
regex descripción
Una definición
d Búsqueda de un carácter que es dígito del 0 a 9
sencilla
w Carácter de palabra, número, letra
Decimal,
hexadecimal y s Espacio
binario
D Un carácter que NO es dígito
Necesario
conocer esto: S Un carácter que no es espacio
tablas ASCII
W Un carácter que no es carácter de palabra
Volviendo a
las regex
Referencias
Números en archivos
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Necesario
echo "Estabamos solos en la habitación"|grep -P "\d"
conocer esto:
tablas ASCII
echo "101 dálmatas"|grep -P "\d"
Volviendo a
las regex
Referencias
Líneas sin números
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Para encontrar aquellas líneas que contienen al menos un caracter no
Temario de la
clase
numérico. Es decir, pueden tener números, pero si tienen otra cosa,
Registrar
aparece en la coincidencia.
inicio de clases
Una definición
grep -P "\D" numeros.txt
sencilla grep -P "\D" textos.txt
Decimal,
hexadecimal y
binario
También, una coincidencia desde el stream
Necesario
conocer esto:
echo "Estabamos solos en la habitación"|grep -P "\D"
tablas ASCII
echo "101 dálmatas"|grep -P "\D"
Volviendo a
las regex
Referencias
Tabla de cuantificadores
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Registrar
inicio de clases
Cuantificador Descripción
Una definición
+ Uno o nada
sencilla
? Puede que exista o no
Decimal,
hexadecimal y {N} N veces
binario
{N,M} N o M veces
Necesario
conocer esto: {N,} N o más veces
tablas ASCII
"*" Cero o más veces
Volviendo a
las regex
Referencias
N veces un número
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
Solo mostrar aquellas filas que contengan 4 números consecutivos
inicio de clases
Una definición
grep -P "\d{4}" numeros.txt
sencilla grep -P "\d{4}" sobre_peliculas/art_kurosawa.txt
Decimal,
hexadecimal y
grep -P "\d{4}" textos.txt
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Listar los archivos con extensión txt
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
inicio de clases
Ya siendo conocido, la expresión *.txt significa que puede haber una
Una definición
cantidad indefinida de caracteres y luego terminar con .txt.
sencilla
Decimal,
ls *.txt
hexadecimal y
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Que una coincidencia de un caracter pueda existir o
no.
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase El uso de ? permite expresar que esa coincidencia no es estrictamente
Registrar
inicio de clases
necesaria.
Una definición
sencilla
echo "busto"|grep "bustos?"
Decimal, echo "¿Qué dices?"|grep "¿?Qué dices\?"
hexadecimal y
binario echo "Qué dices?"|grep "¿?Qué dices\?"
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Tabla de signos agrupadores
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Cuadro: Lógica en regex
Temario de la
clase
Registrar
inicio de clases
Expresión Descripción
Una definición "[AE]" Busca A o E en una palabra
sencilla
"[Aa]" Busca A o a dentro de texto
Decimal,
hexadecimal y "[a-b]" Busca en un rango entre valores a y b
binario
"[x-y]" Un carácter entre x a y
Necesario
conocer esto: "[AB1-4x-z]" Combinación que busca A,B, de 1 a 4, de x a z
tablas ASCII
Volviendo a
"[ˆx]" Un carácter que no está en la búsqueda
las regex "[(slash)xNRO]" Buscar caracter con ese valor hexadecimal
Referencias
Tabla de anclas y límites
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase
Registrar
inicio de clases Cuadro: Anclas y Límites
Una definición
sencilla
"ˆ" Comienza línea con carácter buscado "ˆA"
Decimal,
hexadecimal y "$" Finaliza línea con carácter buscado .a$"
binario
Necesario
conocer esto:
tablas ASCII
Volviendo a
las regex
Referencias
Buscar con flexibilidad
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Temario de la
clase Buscar las líneas que comienzan con mayúsculas en el artículo sobre
Registrar Kurosawa, lo que indicaría (muy posiblemente) inicio de párrafo.
inicio de clases
Volviendo a
las regex
Referencias
Buscar aquellas líneas que con números
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Decimal,
grep -P "^\d*$" numeros.txt
hexadecimal y
binario Aquella que tienen decimales (solo en el caso de este archivo).
Necesario
conocer esto: grep -v -P "^\d*$" numeros.txt
tablas ASCII
Volviendo a
las regex
Referencias
Libros para profundizar
Primeras
lecciones de
Expresiones
Regulares
David Pineda
Osorio
Base teórica (Sipser) Introduction to the Theory of Computation,
Temario de la
clase Michael Sipser
Registrar
inicio de clases
Libro recomendado (básico) Begining Regular Expressions, Watt A.
Una definición
sencilla
Libro recomendado (experto) Mastering Regular Expressions, 3rd
Decimal,
Edition.
hexadecimal y
binario Aprender practicando www.regexone.com
Necesario
conocer esto: Probador regex https://es.infobyip.com/
tablas ASCII
regularexpressioncalculator.php
Volviendo a
las regex
Referencias