Expresiones regulares de MYSQL (REGEXP) con sintaxis y ejemplos

¿Qué son expresiones regulares?

Las expresiones regulares ayudan a los datos de búsqueda que coinciden con los criterios complejos. Miramos los comodines en el tutorial anterior. Si ha trabajado con comodines anteriormente, es posible que se pregunte por qué aprender expresiones regulares cuando puede obtener resultados similares con los comodines. Porque, en comparación con los comodines, las expresiones regulares nos permiten buscar datos que coincidan con criterios aún más complejos.

Sintaxis básica

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

AQUÍ –

  • “Sentencias SELECT …” es la instrucción SELECT estándar
  • “WHERE fieldname” es el nombre de la columna en la que se realizará la expresión regular.
  • “REGEXP ‘pattern'” REGEXP es el operador de expresión regular y ‘pattern’ representa el patrón que corresponderá con REGEXP. RLIKE es el sinónimo de REGEXP y logra los mismos resultados que REGEXP. Para evitar confundirlo con el operador LIKE, es mejor usar REGEXP en su lugar.

Veamos ahora un ejemplo práctico-

La consulta anterior busca todos los títulos de películas que tienen el código de palabra en ellos. No importa si el “código” está al principio, en el medio o al final del título. Mientras esté contenido en el título, será considerado.

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

Ejecutar el script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados.

movie_id título director añorelado categoria ID
4 Código Nombre Negro Edgar Jimz 2010 NULO
5 Las hijas de papá NULO 2007 8
6 Ángeles y demonios NULO 2007 6
7 Código da Vinci NULO 2007 6

Echemos un vistazo de cerca a nuestra expresión regular responsable del resultado anterior.

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

Modifiquemos nuestra secuencia de comandos anterior y use la lista de charlas NO y veamos qué resultados obtendremos después de ejecutar nuestra consulta.

Ejecutar el script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados.

movie_id título director añorelado categoria ID
1 Piratas del Caribe 4 Rob Marshall 2011 1
2 Olvidando a Sarah Marshal Nicholas Stoller 2008 2
3 X Men 2008
9 Honey Mooners John Schultz 2005 8
dieciséis 67% culpable 2012
17 El gran dictador Chalie Chaplie 1920 7
18 película de muestra Anónimo 8
19 película 3 John Brown 1920 8

Echemos un vistazo de cerca a nuestra expresión regular responsable de los resultados anteriores.

‘^ [^ abcd]’ the caret (^) significa que la coincidencia de patrón debe aplicarse al principio y la charlist [^ abcd] significa que los títulos de película que comienzan con cualquiera de los caracteres incluidos 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 una expresión regular. Veamos ahora las 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” solo con una expresión regular, ¿cómo lo haríamos? La respuesta es metacaracteres. Nos permiten afinar nuestros resultados de búsqueda de patrones usando expresiones regulares.

 

Carbonizarse Descripción Ejemplo  
* El metacaracter de asterisco (*) se usa para coincidir con cero (0) o más instancias de las cadenas que lo preceden SELECCIONE * FROM películas DONDE el título REGEXP ‘da *’; dará todas las películas que contengan caracteres “da”. Por ejemplo, Da Vinci Code, Daddy’s Little Girls.
+ El metacarácter más (+) se usa para coincidir con una o más instancias de cadenas que lo preceden. SELECCIONAR * FROM películas DONDE título REGEXP ‘mon +’; dará todas las películas que contengan caracteres “mon”. Por ejemplo, Ángeles y Demonios.
? El metacarácter de pregunta(?) Se usa para hacer coincidir cero (0) o una instancia de las cadenas que lo preceden. SELECCIONAR * FROM categories WHERE category_name REGEXP ‘com?’;  dará todas las categorías que contienen cadena com. Por ejemplo, comedia, comedia romántica.
. El metacarácter punto (.) Se usa para hacer coincidir cualquier carácter individual a excepción de una nueva línea. SELECCIONE * FROM películas WHERE year_released REGEXP ‘200.’; dará todas las películas lanzadas en los años comenzando con los caracteres “200” seguidos de cualquier carácter individual. Por ejemplo, 2005,2007,2008 etc.
[a B C] La charlist [abc] se usa para hacer coincidir cualquiera de los caracteres incluidos. SELECCIONAR * FROM películas DONDE título REGEXP ‘[vwxyz]’; dará todas las películas que contengan cualquier carácter en “vwxyz”. Por ejemplo, X-Men, código Da Vinci.Daddy’s Little Girls, etc.
[^ abc] La charlist [^ abc] se usa para unir cualquier caracter excluyendo los que están encerrados. SELECCIONAR * FROM películas DONDE título REGEXP ‘^ [^ vwxyz]’; dará todas las películas que contengan caracteres distintos de los de “vwxyz”.
[ARIZONA] El [AZ] se utiliza para hacer coincidir cualquier letra mayúscula. SELECCIONAR * FROM miembros WHERE postal_address REGEXP ‘[AZ]’; 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 número de miembro 1.
[Arizona] El [az] se usa para hacer coincidir cualquier letra minúscula SELECT * FROM members WHERE postal_address REGEXP ‘[az]’; dará a todos los miembros que tengan direcciones postales que contengan cualquier carácter de aaz. . Por ejemplo, Janet Jones con membresía número 1.
[0-9] El [0-9] se usa para unir cualquier dígito desde 0 hasta 9. SELECCIONAR * FROM miembros DONDE contact_number REGEXP ‘[0-9]’   dará a todos los miembros que hayan enviado números de contacto que contengan caracteres “[0-9]”. Por ejemplo, Robert Phil.
^ El símbolo de intercalación (^) se utiliza para comenzar el partido al principio. SELECCIONAR * FROM películas DONDE título REGEXP ‘^ [cd]’; da todas las películas con el título que comienza con cualquiera de los caracteres en “cd”. Por ejemplo, Code Name Black, Daddy’s Little Girls y Da Vinci Code.
| La barra vertical (|) se usa para aislar alternativas. SELECCIONAR * FROM películas DONDE título REGEXP ‘^ [cd] | ^ [u]’; da todas las películas con el título que 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. SELECCIONAR * FROM películas DONDE título REGEXP ‘[[: <:]] para’; da todas las películas con títulos que comienzan con los personajes. Por ejemplo: Olvidarse de Sarah Marshal.
[[:>:]] El [[:>:]] coincide con el final de las palabras. SELECCIONAR * FROM películas DONDE título REGEXP ‘ack [[:>:]]’;  da todas las películas con títulos que terminan con los caracteres “ack”. Por ejemplo, Code Name Black.
[:clase:] La [: clase:] coincide con una clase de caracteres, es decir[: alfa:] para unir letras, [: espacio:] para hacer coincidir el espacio en blanco, [: puntuacion:] es puntuacion de coincidencia y [: superior:] para letras de clase superior. SELECCIONAR * FROM películas DONDE título REGEXP ‘[: alpha:]’; da todas las películas con títulos que contienen solo letras. Por ejemplo, Olvidando a Sarah Marshal, X-Men, etc. Película como Pirates of the Caribbean 4 será omitida por esta consulta.

 

La barra invertida (\) se usa como un carácter de escape. Si queremos usarlo como parte del patrón en una expresión regular, debemos usar barras diagonales inversas dobles (\\)

Resumen

  • Las expresiones regulares proporcionan una coincidencia de patrón potente y flexible que puede ayudarnos a implementar utilidades de búsqueda de energía para nuestros sistemas de bases de datos.
  • REGEXP es el operador que se usa cuando se realizan coincidencias de patrones de expresiones regulares. RLIKE es el sinónimo
  • Las expresiones regulares admiten una cantidad de metacaracteres que permiten una mayor flexibilidad y control al realizar coincidencias de patrones.
  • La barra invertida se usa como un carácter de escape en expresiones regulares. Solo se considera en la coincidencia de patrón si se han usado barras invertidas dobles.
  • Las expresiones regulares no distinguen mayúsculas de minúsculas.
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *