Hosting guebs

Apéndice F. Expresiones regulares en MySQL

Las expresiones regulares permiten especificar un patrón para una búsqueda compleja.

MySQL usa la implementación de expresiones regulares de Henry Spencer, que es conforme con POSIX 1003.2. Ver Apéndice B, Credits. MySQL usa la versión extendida para soportar operaciones de concordancia de patrones, a través del operador REGEXP en sentencias SQL. Ver Sección 3.3.4.7, “Coincidencia de patrones”.

Este apéndice es un resumen, con ejemplos, de caracteres especiales y constructores que se pueden utilizar en MySQL para las operaciones REGEXP. No contiene todos los detalles que se pueden encontrar en la página del manual de regex(7) de Henry Spencer. Dicho manual se incluye en el código fuente de MySQL, en el archivo regex.7 dentro del directorio regex.

Una expresión regular describe una serie de cadenas. La expresión regular más simple es aquella que no tiene caracteres especiales en su interior. Por ejemplo, la expresión regular hola concuerda con hola y nada más.

Una expresión regular no trivial usa ciertos constructores especiales, que pueden concordar más de en una cadena. Por ejemplo, la expresión regular hello|word concuerda tanto con la cadena hello como con la cadena word.

Un ejemplo más complicado: la expresión regular B[an]*s concuerda con las cadenas Bananas, Baaaaas, Bs, y cualquier otra cadena que comience con una B, termine con unas y contenga cualquier número de caracteres a o n entre ellas.

Una expresión regular para el operador REGEXP puede utilizar cualquiera de los siguientes caracteres especiales y constructores:

Para utilizar en una expresión regular un carácter especial literalmente, precédalo con dos barras invertidas (\). El parser de MySQL interpreta las barras invertidas, y la biblioteca de expresiones regulares interpreta el resto. Por ejemplo, para concordar con la cadena 1+2, que contiene el carácter especial +, sólo la última de las siguientes expresiones regulares es correcta:

mysql> SELECT '1+2' REGEXP '1+2';                       -> 0
mysql> SELECT '1+2' REGEXP '1\+2';                      -> 0
mysql> SELECT '1+2' REGEXP '1\\+2';                     -> 1

Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.