Hay un curso en platzi dedicado a este tema https://platzi.com/cursos/expresiones-regulares/.
Son muy poderosas y las usamos para hacer un Filtrado de Datos.
Es una manera rápida de hacer una validación de patrones muy compleja.
CURSO
En postgre las expresiones inician con ~* donde el * es que aplica globalmente. Varía entre lenguajes y RDBMS, pero la forma como se escribe la expresión es más general entre lenguajes.
- Ejemplo con los correos electrónicos de los estudiantes.
SELECT email
FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}';
SELECT email
FROM platzi.alumnos
WHERE email ~*'[A-Z0-9._%+-]+@google[A-Z0-9.-]+\\.[A-Z]{2,4}';
- ~* = De manera global e incorporando Mayúsculas o Minúsculas tiene que validar que exista n # de caracteres;
- [A-Z0-9.%+-] = Caracteres que vayan de la A a la Z, que vayan del 0 al 9 (Alpha-Numéricos), o que incluyan caracteres que están permitidos dentro de los correos electrónicos como .%+- etc.
- +@ = Obligatoriamente debe existir el @, después de ese carácter podemos tener varios caracteres;
- [A-Z0-9.-] = Que pueden ser Alpha-Numéricos y pueden tener punto o guion y ya no se permite otros caracteres especiales.
- +\ . = Finalmente le Concatenamos un punto ya que siempre debe tener la terminación del dominio que termina con un punto.
- [A-Z]{2,4} = Al final de ese punto van solo letras entre 2 a 4 caracteres (net, org, edu, com, etc).
Al correr el código si encuentra algún patrón fuera de lo que especificamos lo deja por fuera.
En MySQL se usa REGEXP'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';