Funciones de expresiones regulares

Las funciones de expresiones regulares identifican patrones de caracteres concretos y son útiles a la hora de validar datos, por ejemplo, en las comprobaciones de tipos, en las comprobaciones de rangos y las comprobaciones de caracteres no permitidos. Las funciones de expresiones regulares admitidas son plenamente compatibles con Perl v5.

La descripción de cómo funcionan las expresiones regulares exceden el ámbito de este documento. Para obtener información, consulte los numerosos textos que describen cómo construir expresiones regulares Perl.

Las funciones de expresiones regulares aplican el patrón regexp de forma recurrente a diferentes partes del valor de entrada hasta que se produce alguna de estas condiciones:
  • Se ha encontrado una coincidencia. La función devuelve el valor de la coincidencia.
  • No se encuentra una coincidencia para el patrón en la posición actual: la función repite el proceso de búsqueda utilizando otra parte del patrón.

Existe un límite en cuanto al número de veces que la función repite la ejecución con un nuevo patrón de búsqueda. En IBM® SQL Extensions toolkit Release 1.3 y posteriores, el límite es de 10.000.000 de recursiones, que es el valor predeterminado generalmente aceptado. (En releases anteriores, el límite predeterminado fue de 10 000.) Si se alcanza el límite antes de encontrar una coincidencia, la función muestra el errorERROR: 0 : Regex exec: Match limit reached, consider rewriting the pattern.

El límite de recurrencia no limite la cadena de búsqueda de entrada: controla el esfuerzo empleado en encontrar coincidencias de patrones "extremos" como los patrones anidados o sin límite. Consideremos el ejemplo siguiente:
https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(?\S+)))
El patrón resaltado en negrita produce como resultado una búsqueda para hacer coincidir una o más apariciones de (una o más apariciones de alfanuméricos). Este patrón da como resultado recursiones innecesarias que pueden alcanzar rápidamente el límite con series de entrada de moderadas a grandes. Una mejor opción es cambiar el patrón de búsqueda a un formato más eficiente, como se indica a continuación:
https?://([-\w\.]+)(:\d+)?(/([\w/_\.]*(?\S+)))