Provided by: manpages-es_1.55-10_all bug

NOMBRE

       regcomp,  regexec,  regerror,  regfree  -  funciones  para  expresiones
       regulares POSIX

SINOPSIS

       #include <sys/types.h>
       #include <regex.h>

       int regcomp(regex_t *preg, const char *regex, int cflags);
       int regexec(const regex_t *preg, const  char  *string,  size_t  nmatch,
                   regmatch_t pmatch[], int eflags);
       size_t regerror(int  errcode, const regex_t *preg, char *errbuf, size_t
                       errbuf_size);
       void regfree(regex_t *preg);

COMPILACI'ON DE EXPRESIONES REGULARES POSIX

       regcomp se utiliza para compilar una expresion regular  en  un  formato
       apropiado para ser usado por regexec en busquedas posteriores.

       A  regcomp  se  le  pasan como parametros preg, un puntero a un area de
       almacenamiento temporal de patrones, regex, un  puntero  a  una  cadena
       terminada  en  un  caracter  nulo  y  cflags,  banderas utilizadas para
       determinar el tipo de compilacion.

       Toda busqueda con expresiones regulares se debe  realizar  mediante  un
       buffer  de patrones compilados, por tanto, a regexec siempre se le debe
       proporcionar  la  direccion  de  un  buffer  de  patrones  inicializado
       mediante regcomp.

       cflags  debe  ser  un  O-logico  a  nivel  de  bits de una o mas de las
       siguientes opciones:

       REG_EXTENDED
              Utilizar el tipo de sintaxis 'Expresion Regular Extendida POSIX'
              cuando  se  interprete  regex.   Si no se activa esta opcion, se
              utiliza el tipo de sintaxis 'Expresion Regular Basica POSIX'.

       REG_ICASE
              No distinguir entre  mayusculas  y  minusculas.  Las  siguientes
              busquedas   regexec   que   usen  este  buffer  de  patrones  no
              distinguiran entre mayusculas y minusculas.

       REG_NOSUB
              No se necesita soporte para obtener las posiciones de subcadenas
              coincidentes.  Los  parametros  nmatch  y  pmatch  de regexec se
              ignoran si el buffer de patrones proporcionado  se  compilo  con
              esta opcion.

       REG_NEWLINE
              Los  operadores  "coincidir con cualquier caracter" no coinciden
              con un caracter "nueva linea".

              Una lista  de  no-coincidencia  ([^...])   que  no  contenga  un
              caracter "nueva linea" no coincidira con una "nueva linea".

              Un  operador  "coincidir al principio de linea" (^) coincide con
              la cadena vacia inmediatamente posterior a  un  caracter  "nueva
              linea",  sin  tener en cuenta si eflags, la bandera de ejecucion
              de regexec, contiene REG_NOTBOL o no.

              Un operador "coincidir al final de linea" ($)  coincide  con  la
              cadena  vacia  inmediatamente  anterior  a  un  caracter  "nueva
              linea", sin tener en cuenta si eflags contiene REG_NOTEOL o no.

COINCIDENCIAS EN LAS EXPRESIONES REGULARES POSIX

       regexec se utiliza para comprobar si una cadena string, terminada en un
       caracter  nulo,  coincide  con alguno de los patrones precompilados del
       buffer preg.  nmatch y pmatch se utilizan para informar respecto  a  la
       localizacion  de cualquier coincidencia.  eflags puede ser REG_NOTBOL o
       REG_NOTEOL  o  un  O-logico  de  ambos  valores,  lo  que   cambia   el
       comportamiento   en   las   coincidencias   tal   como  se  describe  a
       continuacion.

       REG_NOTBOL
              El operador "coincidir al principio de linea" siempre  falla  en
              las coincidencias (pero vea la opcion de compilacion REG_NEWLINE
              mas arriba).  Esta bandera se puede  utilizar  cuando  se  pasan
              diferentes porciones de una cadena a regexec y el comienzo de la
              cadena no se debe interpretar como el principio de una linea.

       REG_NOTEOL
              El operador "coincidir al final de linea" siempre  falla  en  la
              coincidencias (pero vea la opcion de compilacion REG_NEWLINE mas
              arriba).

   DESPLAZAMIENTOS DE BYTES
       A menos que se especificara REG_NOSUB en la compilacion del  buffer  de
       patrones,   es   posible  obtener  informacion  sobre  la  posicion  de
       subcadenas coincidentes.  pmatch debe  tener  un  tamano  de  al  menos
       nmatch  elementos.   Estos  se  rellenan  al  ejecutar  regexec con las
       posiciones de cadenas coincidentes. Cualquier elemento de la estructura
       no utilizado contendra el valor -1.

       La  estructura  regmatch_t,  que  es  el  tipo  de pmatch, se define en
       regex.h.

              typedef struct
              {
                regoff_t rm_so;
                regoff_t rm_eo;
              } regmatch_t;

       Cada elemento rm_so que no es -1 indica el principio  de  la  siguiente
       mayor  subcadena  coincidente dentro de la cadena. El elemento relativo
       rm_eo indica el final de la coincidencia.

INFORMES DE ERROR POSIX

       regerror se utiliza para convertir los  codigos  de  error  que  pueden
       devolver tanto regcomp como regexec en cadenas de mensaje de error.

       A  regerror  se  le  pasa  el  codigo  de  error, errcode, el buffer de
       patrones preg, un puntero  al  buffer  de  una  cadena  de  caracteres,
       errbuf,  y el tamano del buffer de la cadena, errbuf_size.  Devuelve el
       tamano de errbuf necesario para contener la cadena con  el  mensaje  de
       error  terminada  en un caracter nulo. Si tanto errbuf como errbuf_size
       no son cero, errbuf  se  rellena  con  los  primeros  errbuf_size  -  1
       caracteres del mensaje de error y un caracter nulo terminador.

LIBERACI'ON DE BUFFERS DE PATRONES POSIX

       Si  a  regfree  se  le  pasa un buffer de patrones precompilados, preg,
       liberara la memoria  del buffer de patrones reservada por el proceso de
       compilacion, regcomp.

VALOR DEVUELTO

       regcomp  devuelve  cero  si  la  compilacion tiene exito y un codigo de
       error si falla.

       regexec devuelve cero si hay coincidencia  y  REG_NOMATCH  en  caso  de
       fallo.

ERRORES

       regcomp puede devolver los siguientes errores:

       REG_BADRPT
              Uso  incorrecto  de operadores de repeticion, como el uso de `*'
              como primer caracter.

       REG_BADBR
              Uso incorrecto del operador de referencia inversa.

       REG_EBRACE
              Existe una llave de un operador de intervalo no emparejada.

       REG_EBRACK
              Existe un corchete de un operador de lista no emparejado.

       REG_ERANGE
              Uso incorrecto de un operador de rango; por ejemplo,  el  limite
              superior del rango ocurre antes que el limite inferior.

       REG_ECTYPE
              Nombre de clase de caracteres desconocido.

       REG_ECOLLATE
              Elemento de comparacion invalido.

       REG_EPAREN
              Existe un parentesis de un operador de grupo no emparejado.

       REG_ESUBREG
              Referencia inversa incorrecta a una subexpresion.

       REG_EEND
              Error indefinido. No definido por POSIX.2.

       REG_EESCAPE
              Barra invertida (\) al final.

       REG_BADPAT
              Uso incorrecto de operadores de patron tales como grupo o lista.

       REG_ESIZE
              La  expresion  regular  compilada necesita un buffer de patrones
              mayor que 64Kb. No definido por POSIX.2.

       REG_ESPACE
              Las rutinas de expresiones regulares se ejecutaron fuera de  sus
              limites de memoria.

CONFORME A

       POSIX.2

V'EASE TAMBI'EN

       regex(7), El manual de expresiones regulares de GNU