Provided by:
manpages-es_1.55-10_all 
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