Expresiones regulares MYSQL (REGEXP) con sintaxis y ejemplos

¿Qué son las expresiones regulares?

Las expresiones regulares ayudan a buscar datos que coincidan con complex criterios. Analizamos los comodines en el tutorial anterior. Si ha trabajado con comodines antes, es posible que se pregunte por qué aprender expresiones regulares cuando puede obtener resultados similares utilizando los comodines. Porque, en comparación con los comodines, las expresiones regulares nos permiten buscar datos que coincidan aún más.plex criterio.

Sintaxis básica

La sintaxis básica para una expresión regular es la siguiente

SELECT statements... WHERE fieldname REGEXP 'pattern';

AQUÍ -

  • “SELECCIONAR declaraciones…” es el estándar Instrucción SELECT
  • “DONDE nombre de campo” es el nombre de la columna en la que se realizará la expresión regular.
  • “Patrón 'REGEXP'” REGEXP es el operador de expresión regular y "patrón" representa el patrón que REGEXP debe hacer coincidir. RLIKE son los sinónimo de REGEXP y logra los mismos resultados que REGEXP. Para evitar confundirlo con el operador LIKE, mejor usar REGEXP preferiblemente.

Veamos ahora un ejemplo práctico.

SELECT * FROM `movies` WHERE `title` REGEXP 'code';

La consulta anterior busca todos los títulos de películas que contienen la palabra código. No importa si el “código” está al principio, en la mitad o al final del título. Siempre que esté contenido en el título se tendrá en cuenta.

Supongamos que queremos buscar películas que comiencen con a, b, c o d, seguidas de cualquier número de otros personajes, ¿cómo haríamos para lograrlo? Podemos usar una expresión regular junto con los metacaracteres para lograr los resultados deseados.

SELECT * FROM `movies` WHERE `title` REGEXP '^[abcd]';

Ejecutando el script anterior en Banco de trabajo MySQL contra el myflixdb nos da el siguientewing resultados.

movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6

Ahora echemos un vistazo más de cerca a nuestra expresión regular responsable del resultado anterior.

'^[abcd]' el símbolo de intercalación (^) significa que la coincidencia de patrón debe aplicarse al principio y charlist [abcd] significa que en nuestro conjunto de resultados solo se devuelven títulos de películas que comienzan con a, b, c o d.

Modifiquemos nuestro script anterior y usemos NOT charlist y veamos qué resultados obtendremos después de ejecutar nuestra consulta.

SELECT * FROM `movies` WHERE `title` REGEXP '^[^abcd]';

La ejecución del script anterior en MySQL Workbench contra myflixdb nos da lo siguientewing resultados.

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men 2008
9 Honey mooners John Schultz 2005 8
16 67% Guilty 2012
17 The Great Dictator Chalie Chaplie 1920 7
18 sample movie Anonymous 8
19 movie 3 John Brown 1920 8

Ahora echemos un vistazo más de cerca a nuestra expresión regular responsable de los resultados anteriores.

'^[^abcd]' el símbolo de intercalación (^) significa que la coincidencia de patrón debe aplicarse al principio y la lista de caracteres [^abcd] significa que los títulos de películas que comienzan con cualquiera de los caracteres adjuntos se excluyen del conjunto de resultados.

Metacaracteres de expresión regular

Lo que vimos en el ejemplo anterior es la forma más simple de expresión regular. Veamos ahora coincidencias de patrones de expresiones regulares más avanzadas. Supongamos que queremos buscar títulos de películas que comiencen con el patrón "código" usando solo una expresión regular, ¿cómo lo haríamos? La respuesta son los metacaracteres. Nos permiten ajustar los resultados de nuestra búsqueda de patrones utilizando expresiones regulares.

Char Descripción Ejemplo
* El asterisco (*) El metacarácter se utiliza para hacer coincidir cero (0) o más instancias de las cadenas que lo preceden. SELECCIONE * DE películas DONDE título REGEXP 'da*'; dará a todas las películas que contengan caracteres "da". Por ejemplo, El código Da Vinci, Las niñas de papá.
+ El más (+) El metacarácter se utiliza para hacer coincidir una o más instancias de cadenas que lo preceden. SELECCIONE * DE `películas` DONDE `título` REGEXP `mon+’; dará a todas las películas que contengan personajes "mon". Por ejemplo, Ángeles y demonios.
? La pregunta(?) El metacarácter se utiliza para hacer coincidir cero (0) o una instancia de las cadenas que lo preceden. SELECCIONE * DE `categorías` DONDE `nombre_categoría` REGEXP `com?’; proporcionará todas las categorías que contienen cadenas com. Por ejemplo, comedia, comedia romántica.
. El punto (.) El metacarácter se utiliza para hacer coincidir cualquier carácter, a excepción de una nueva línea. SELECCIONE * DE películas DONDE `año_de lanzamiento` REGEXP `200.’; mostrará todas las películas estrenadas en los años que comienzan con los caracteres "200" seguidos de cualquier carácter individual. Por ejemplo, 2005,2007,2008, etc.
[a B C] El lista charlista [abc] se utiliza para hacer coincidir cualquiera de los caracteres adjuntos. SELECCIONE * DE `películas` DONDE `título` REGEXP ‘[vwxyz]’; mostrará todas las películas que contengan un solo carácter en "vwxyz". Por ejemplo, X-Men, El código Da Vinci, etc.
[^ abc] El lista char [^abc] se utiliza para hacer coincidir cualquier carácter excepto los incluidos. SELECCIONE * DE `películas` DONDE `título` REGEXP ‘^[^vwxyz]’; mostrará todas las películas que contengan personajes distintos de los de "vwxyz".
[ARIZONA] El [ARIZONA] se utiliza para hacer coincidir cualquier letra mayúscula. SELECCIONE * DE `miembros` DONDE `dirección_postal` REGEXP ‘[A-Z]’; le dará a todos los miembros que tengan una dirección postal que contenga cualquier carácter de la A a la Z. Por ejemplo, Janet Jones con el número de membresía 1.
[Arizona] El [Arizona] se utiliza para coincidir con cualquier letra minúscula SELECCIONE * DE `miembros` DONDE `dirección_postal` REGEXP ‘[a-z]’; dará a todos los miembros que tengan direcciones postales que contengan cualquier carácter de la a a la z. .Por ejemplo, Janet Jones con la membresía número 1.
[0 9-] El [0 9-] se utiliza para hacer coincidir cualquier dígito del 0 al 9. SELECCIONE * DE `miembros` DONDE `número_contacto` REGEXP ‘[0-9]’ proporcionará a todos los miembros que hayan enviado números de contacto que contengan caracteres "[0-9]". Por ejemplo, Robert Phil.
^ El cursor (^) se utiliza para iniciar el partido desde el principio. SELECCIONE * DE `películas` DONDE `título` REGEXP `^[cd]’; muestra todas las películas cuyo título comienza con cualquiera de los caracteres de "cd". Por ejemplo, Code Name Black, Daddy's Little Girls y Da Vinci Code.
| El barra vertical (|) Se utiliza para aislar alternativas. SELECCIONE * DE `películas` DONDE `título` REGEXP ‘^[cd]|^[u]’; ofrece todas las películas cuyo título comienza con cualquiera de los caracteres en “cd” o “u”. Por ejemplo, Code Name Black, Daddy's Little Girl, Da Vinci Code y Underworld – Awakening.
[[:<:]] El[[:<:]] coincide con el comienzo de las palabras. SELECCIONE * DE `películas` DONDE `título` REGEXP ‘[[:<:]]para’;

Ofrece todas las películas con títulos que comienzan con los personajes. Por ejemplo: olvidar a Sarah Marshal.

[[:>:]] El [[:>:]] coincide con el final de las palabras. SELECCIONE * DE `películas` DONDE `título` REGEXP `ack[[:>:]]’;

da todas las películas con títulos que terminan con los personajes "ack"

.Por ejemplo, Nombre en clave Negro.

[:clase:] El [:clase:] coincide con una clase de personaje, es decir

[:alfa:] para unir letras, [:espacio:] para que coincida con los espacios en blanco, [: puntuar:] coincide con puntuaciones y [:upper:] para letras de clase superior.

SELECCIONE * DE `películas` DONDE `título` REGEXP `[:alfa:]’;

da todas las películas con títulos que contienen solo letras

.Por ejemplo, olvidar a Sarah Marshal, X-Men, etc.

Esta consulta omitirá películas como Piratas del Caribe 4.

La barra invertida (\) se utiliza como carácter de escape. Si queremos usarlo como parte del patrón en una expresión regular, deberíamos usar double barras invertidas (\\)

Resumen

  • Las expresiones regulares proporcionan una coincidencia de patrones potente y flexible que puede ayudarnos a implementar utilidades de búsqueda potentes para nuestros sistemas de bases de datos.
  • REGEXP es el operador utilizado al realizar coincidencias de patrones de expresiones regulares. RLIKE es sinónimo
  • Las expresiones regulares admiten una serie de metacaracteres que permiten una mayor flexibilidad y control al realizar coincidencias de patrones.
  • La barra invertida se utiliza como carácter de escape en expresiones regulares. Sólo se considera en la coincidencia de patrón si double Se han utilizado barras invertidas.
  • Las expresiones regulares no distinguen entre mayúsculas y minúsculas.