CursosEmpresasBlogLiveConfPrecios

Regularizando expresiones

Clase 23 de 29 • Curso Práctico de SQL

Clase anteriorSiguiente clase

Contenido del curso

Introducción a SQL

  • 1
    Breve historia de SQL

    Breve historia de SQL

    06:03 min
  • 2
    Álgebra relacional

    Álgebra relacional

    07:05 min
  • 3

    Instalación de la BD de ejemplo

    01:28 min
  • 4
    Qué es una proyección (SELECT)

    Qué es una proyección (SELECT)

    06:14 min
  • 5
    Origen (FROM)

    Origen (FROM)

    08:41 min
  • 6
    Productos cartesianos (JOIN)

    Productos cartesianos (JOIN)

    10:36 min
  • 7
    Selección (WHERE)

    Selección (WHERE)

    11:50 min
  • 8
    Ordenamiento (ORDER BY)

    Ordenamiento (ORDER BY)

    07:57 min
  • 9
    Agregación y limitantes (GROUP BY y LIMIT)

    Agregación y limitantes (GROUP BY y LIMIT)

    09:09 min

Ejercitando tu SQL

  • 10
    El primero

    El primero

    11:05 min
  • 11
    El segundo más alto

    El segundo más alto

    16:25 min
  • 12
    Seleccionar de un set de opciones

    Seleccionar de un set de opciones

    11:16 min
  • 13
    En mis tiempos

    En mis tiempos

    09:50 min
  • 14
    Seleccionar por año

    Seleccionar por año

    08:13 min
  • 15
    Duplicados

    Duplicados

    13:09 min
  • 16
    Selectores de rango

    Selectores de rango

    10:16 min
  • 17
    Eres lo máximo

    Eres lo máximo

    07:55 min
  • 18
    Egoísta (selfish)

    Egoísta (selfish)

    09:47 min
  • 19
    Resolviendo diferencias

    Resolviendo diferencias

    10:49 min
  • 20
    Todas las uniones

    Todas las uniones

    14:45 min
  • 21
    Triangulando

    Triangulando

    10:34 min
  • 22
    Generando rangos

    Generando rangos

    14:27 min
  • 23
    Regularizando expresiones

    Regularizando expresiones

    Viendo ahora

Conceptos de SQL Avanzado

  • 24
    Bases de datos distribuidas

    Bases de datos distribuidas

    11:59 min
  • 25
    Queries distribuídos

    Queries distribuídos

    11:24 min
  • 26
    Sharding

    Sharding

    09:42 min
  • 27
    Window functions

    Window functions

    13:14 min
  • 28
    Particiones y agregación

    Particiones y agregación

    14:36 min
  • 29
    El futuro de SQL

    El futuro de SQL

    06:13 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Jeiner Muñoz Olivera

        Jeiner Muñoz Olivera

        student•
        hace 5 años

        "¡A respirar!, ya acabó el cardio". JAJAJA

          JAVIER SANTIAGO SALGADO

          JAVIER SANTIAGO SALGADO

          student•
          hace 5 años

          Total baje 3 kilos con ese cardio =)

          Irving Juárez

          Irving Juárez

          student•
          hace 4 años

          Pero todavía no acaba, falta el entrenamiento de verdad

        Gabriel Salvador

        Gabriel Salvador

        student•
        hace 5 años

        La expresión regular es la siguiente

        ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'
          Ricardo Ruíz Velazco

          Ricardo Ruíz Velazco

          student•
          hace 5 años

          gracias!

        Fabián Vega Alcota

        Fabián Vega Alcota

        student•
        hace 5 años

        Experimentando un poco con lpad y rpad, logre dibujar un árbol :joy: :evergreen_tree:

        SELECT lpad('\', s.a, rpad(lpad('/', d.e, ' '), s.a, '*')) FROM generate_series(18, 26) AS s(a), generate_series(17,0,-2) AS d(e) LIMIT 10;```
          Fabián Vega Alcota

          Fabián Vega Alcota

          student•
          hace 5 años

          No creo que sea irrelevante, jajaj :joy:

          Bárbara de los Ángeles Morantes Carvajal

          Bárbara de los Ángeles Morantes Carvajal

          student•
          hace 5 años

          Gracias :3

        Antonio Demarco Bonino

        Antonio Demarco Bonino

        student•
        hace 4 años

        Interesante clase. Tiro un tip: Este símbolo '~' se hace con ALT + 126.

        Osvaldo Damián Ruiz

        Osvaldo Damián Ruiz

        student•
        hace 3 años
        star-lord.png

        lo dijo starlord, yo le haria caso

        Angel Vega

        Angel Vega

        student•
        hace 4 años

        Para los que quieran el filtrado de los ''@google'' ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]+.[A-Z]{2,4}'

        Jose Luis Perez Ruiz

        Jose Luis Perez Ruiz

        student•
        hace 3 años

        Código escrito en clase😃.

        select email from platzi.alumnos where email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'; -- ~*: De forma global --[A-Z0-9.%+-]: Que vayan de la A a la Z sin contar mayúsculas o minúsculas y que vayan del 0 al 9(alfanuméricos) o que incluyan algunos caracteres como ._%+- -- @[A-Z0-9.-]: específicamente debe existir el caracter @ y luego los demás caracteres y puede tenr . o - -- \.[A-Z]{2,4}: termina en . y al final van de 2 a 4 caracteres max. select email from platzi.alumnos where email ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]+\.[A-Z]{2,4}'; -- filtrar correos de google
        Martin DAVILA

        Martin DAVILA

        student•
        hace 5 años
        SELECT lpad ('*', generate_series, '*') FROM generate_series(1,10);```
        Javier Pajarito Caicedo

        Javier Pajarito Caicedo

        student•
        hace 4 años

        Expresiones regulares será uno de mis próximos cursos, es clave para el análisis de textos.

        Manuel Espitia

        Manuel Espitia

        student•
        hace 4 años

        Dato: La expresión que va dentro de las comillas no debe tener espacios.

        Aaron Quiroga

        Aaron Quiroga

        student•
        hace 4 años

        ++Regularizando expresiones++ Permiten insertar una lógica extensa y compleja de manera sencilla

        SELECT email FROM platzi.alumnos WHERE email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';
          Juan Esteban Bolívar Ferrer

          Juan Esteban Bolívar Ferrer

          student•
          hace 3 años

          Gracias!

        Andrés David Lizarazo Becerra

        Andrés David Lizarazo Becerra

        student•
        hace 5 años

        Si a alguien le interesa esta es la expresión regular completa para generar números realistas de teléfonos de Estados Unidos: [2-9][0-9]{2}-[2-9][0-9]{2}-[0-9]{4}

        Pablo Alejandro Figueroa

        Pablo Alejandro Figueroa

        student•
        hace 2 años
        Captura de pantalla 2023-09-16 221219.png
        Aaron Fabrizio Calderon Guillermo

        Aaron Fabrizio Calderon Guillermo

        student•
        hace 5 años

        No pude hallarlo en SQL Server. ¿Alguien pudo realizar el código en SQL Server?

          roberto hernandez de la cruz

          roberto hernandez de la cruz

          student•
          hace 4 años

          Fue lo único que se me ocurrió si alguien sabe de algo similar en SQL server se los agradecería :)

          2021-11-23_15h03_08.png

        Octavio Alfonso Cervantes Ruiz

        Octavio Alfonso Cervantes Ruiz

        student•
        hace 5 años

        Ejercicio de la clase anterior:

        select lpad('*', s.a, '*') from generate_series(1, 15) AS s(a);
        Irving Jerico Hernandez Diaz

        Irving Jerico Hernandez Diaz

        student•
        hace 5 años

        ya soy fit?

        Sebastian Rodriguez

        Sebastian Rodriguez

        student•
        hace 3 años

        Las expresiones regulares son tremendamente utiles, solamente pensando en los correos, podemos saber de que pais es cada usuario añadiendo un Group by por (.co, .ar, .mx, .ru, etc), esta ha sido la clase que mas me llamo la atencion de lo que va hasta ahora.

        Juan Pablo Reina Gutierrez

        Juan Pablo Reina Gutierrez

        student•
        hace 5 años

        Este fue el código que se me ocurrió:

        SELECT lpad('*', a.id, '*'), s.a FROM platzi.alumnos AS a INNER JOIN generate_series(0, (SELECT COUNT(*) FROM platzi.alumnos)) AS s(a) ON s.a = a.id LIMIT 30;
          Dany Pascual Gomez Sanchez

          Dany Pascual Gomez Sanchez

          student•
          hace 5 años

          SELECT lpad('', a.id, ''), s.a, CAST(a.fecha_incorporacion as DATE), s.a as incremento, CAST(a.fecha_incorporacion as DATE) + CAST(s.a as int) as NuevaFecha FROM platzi.alumnos AS a INNER JOIN generate_series(0, (SELECT COUNT(*) FROM platzi.alumnos)) AS s(a) ON s.a = a.id;

        Daniel Guardia

        Daniel Guardia

        student•
        hace 2 años

        El tipo nunca se cambió de ropa. Hizo el curso en 6 horas.

        Mario Alexander Vargas Celis

        Mario Alexander Vargas Celis

        student•
        hace un año

        En SQL, las expresiones regulares (RegEx) permiten buscar y manipular texto mediante patrones. Estas son extremadamente útiles para validar datos, realizar búsquedas avanzadas, y transformar información.

        Diferentes bases de datos soportan expresiones regulares de manera distinta. A continuación, te explico cómo usarlas en PostgreSQL, MySQL y Oracle.

        1. PostgreSQL y expresiones regulares

        Operadores comunes

        • ~ : Coincide con un patrón (sensible a mayúsculas y minúsculas).
        • ~*: Coincide con un patrón (insensible a mayúsculas y minúsculas).
        • !~ : No coincide con un patrón (sensible a mayúsculas y minúsculas).
        • !~*: No coincide con un patrón (insensible a mayúsculas y minúsculas).

        Ejemplo: Buscar nombres que comienzan con "A"

        SELECT nombre FROM usuarios WHERE nombre ~ '^A';

        Explicación: El patrón ^A busca cadenas que empiezan con la letra "A".

        Ejemplo: Buscar cadenas que terminan en un número

        SELECT nombre FROM usuarios WHERE nombre ~ '[0-9]$';

        Explicación: [0-9]$ busca cadenas que terminan con un dígito.

        Funciones relacionadas

        • regexp_matches: Devuelve las coincidencias encontradas.
        • regexp_replace: Reemplaza texto basado en un patrón.

        Ejemplo: Reemplazar espacios por guiones bajos

        SELECT regexp_replace(nombre, ' ', '_', 'g') AS nombre_modificado FROM usuarios;

        Explicación: Reemplaza todos los espacios por guiones bajos.

        Ejemplo: Extraer el dominio de un correo electrónico

        SELECT regexp_matches(email, '@(.+)$') AS dominio FROM usuarios;

        Explicación: Extrae todo después del símbolo @.

        2. MySQL y expresiones regulares

        En MySQL, se utiliza la función REGEXP para trabajar con expresiones regulares.

        Operadores comunes

        • REGEXP o RLIKE: Para buscar coincidencias con un patrón.
        • NOT REGEXP: Para buscar lo que no coincide con el patrón.

        Ejemplo: Buscar correos con dominio "gmail.com"

        SELECT email FROM usuarios WHERE email REGEXP 'gmail\\.com$';

        Explicación: Busca correos que terminan con gmail.com. Se usa \\. para escapar el punto.

        Ejemplo: Validar números de teléfono (10 dígitos)

        SELECT telefono FROM usuarios WHERE telefono REGEXP '^[0-9]{10}$';

        Explicación: ^[0-9]{10}$ busca cadenas con exactamente 10 dígitos.

        Funciones relacionadas

        • REGEXP_REPLACE: Introducido en MySQL 8.0 para reemplazar texto basado en un patrón.

        Ejemplo: Reemplazar guiones en números de teléfono

        SELECT REGEXP_REPLACE(telefono, '-', '') AS telefono_limpio FROM usuarios;

        Explicación: Elimina todos los guiones de la columna telefono.

        3. Oracle y expresiones regulares

        Oracle incluye funciones avanzadas para expresiones regulares como REGEXP_LIKE, REGEXP_REPLACE, REGEXP_INSTR y REGEXP_SUBSTR.

        Ejemplo: Buscar nombres que contienen números

        SELECT nombre FROM usuarios WHERE REGEXP_LIKE(nombre, '[0-9]');

        Explicación: Busca nombres que contengan algún dígito.

        Reemplazar texto con REGEXP_REPLACE

        Ejemplo: Convertir texto a minúsculas

        SELECT REGEXP_REPLACE(nombre, '[A-Z]', LOWER('\0')) AS nombre_minusculas FROM usuarios;

        Explicación: Reemplaza todas las letras mayúsculas por minúsculas.

        Extraer texto con REGEXP_SUBSTR

        Ejemplo: Extraer el código postal de una dirección

        SELECT REGEXP_SUBSTR(direccion, '[0-9]{5}') AS codigo_postal FROM usuarios;

        Explicación: Extrae un número de 5 dígitos (código postal) de la columna direccion.

        Patrones comunes en SQL

        PatrónDescripción^Inicio de la cadena.$Fin de la cadena..Cualquier carácter.[abc]Coincide con cualquiera de a, b o c.[^abc]No coincide con a, b o c.[a-z]Coincide con letras minúsculas de la a a la z.[0-9]Coincide con dígitos del 0 al 9.\dCualquier dígito (igual a [0-9]).\wCualquier carácter alfanumérico o guion bajo.\sCualquier espacio en blanco.{n}Exactamente n repeticiones.{n,}Al menos n repeticiones.{n,m}Entre n y m repeticiones.*Cero o más repeticiones.+Una o más repeticiones.?Cero o una repetición.