REGCOMP(3)

NOME
regcomp, regexec, regerror, regfree - funções do regex POSIX

SINÓPSE
#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);

COMPILAÇÃO DO REGEX POSIX
regcomp é usado para compilar uma expressão regular para um formato que é apropriado para buscas subsequentes de regexec. regcomp é fornecido com preg, um ponteiro para uma área padrão de armazenamento de buffer; regex, um ponteiro para a seqüencia terminada em nulo e cflags, sinalizador usadas para determinar o tipo de compilação. Todas as buscas de expressão regular precisam ser feitas através de um buffer-modelo compilado, portanto regexec sempre precisa ser fornecido com o endereço de um buffer padrão de regcomp inicializado. cflags pode ser um 'OU' bit-a-bit de um ou mais dos seguintes itens:

REG_EXTENDED
    Usa POSIX Sintaxe de Expressões Regular Estendidas quando interpreta regex. Se não for selecionado, POSIX A sintaxe de Expressões Regulares Básicas é usada.

REG_ICASE
    Não diferencia maiúsculas de minúsculas. Buscas sequenciais de regexec usando este buffer padrão serão insensíveis à caixa.

REG_NOSUB
    O suporte para endereçamento de subseqüencias de resultados não é requerido. Os parâmetros nmatch e pmatch para regexec são ignorados se o buffer padrão fornecido foi compilado com este selecionador selecionado.

REG_NEWLINE
    Operadores de 'casamento com qualquer caractere' não casam com um caractere de nova linha. Uma lista de não-casamento ([^...]) que não contém um caractere de nova linha não encontra um caractere de nova linha. Operador de 'casamento com início de linha' (^) casa com a sequëncias vazia imediatamente depois de um caractere de nova linha, independente se eflags, as flags de execução de regexec, contêm REG_NOTBOL. Operadores de 'casamento com fim de linha' ($) casa com a seqüencia vazia imediatamente antes de um caractere de nova linha, independente se eflags contém REG_NOTEOL.

CASAMENTO DO REGEX POSIX
regexec é usado para encontrar uma seqüencia terminada em nulo no buffer padrão pré-compilado, preg. nmatch e pmatch são usados para dar informações a respeito da posição de qualquer casamento. eflags pode ser um 'OU'bit-a-bit de um ou ambos REG_NOTBOL e REG_NOTEOL que causam mudanças no comportamento de casamento descrito abaixo.

REG_NOTBOL
    O operador de 'casamento com início de linha' sempre falha em encontrar (mas veja o sinalizador de compilação REG_NEWLINE acima). Este sinalizador pode ser usada quando porções diferentes de uma seqüencia são passadas para regexec e o início da seqüencia não pode ser interpretada como o começo da linha.

REG_NOTEOL
    O operador de 'casamento com o fim da linha' sempre falha em encontrar (mas veja o sinalizador de compilação REG_NEWLINE acima).

  COMPENSAÇÕES DE BYTE
A menos que REG_NOSUB tenha sido selecionado para a compilação do 'buffer' modelo, é possível obter informações sobre endereçamento de casamento de subsequëncias. pmatch precisa ser dimensionado para ter pelo menos nmatch elementos. Estes são preenchidos por regexec com endereços de casamento de subseqüencias. Quaisquer elementos de estrutura não-usados conterão o valor -1. A estrutura regmatch_t que é o tipo de pmatch é definida em regex.h.
    typedef struct
    {
    regoff_t rm_so;
    regoff_t rm_eo;
    } regmatch_t;
Cada elemento rm_so que não é -1 indica a compensação inicial do próximo maior casamento de subseqüencia dentro da seqüencia. O elemento rm_eo relativo indica a compensação final do casamento.

REPORTAGEM DE ERROS POSIX
regerror é usado para transformar os códigos de erro que podem ser retornados por regcomp e regexec para seqüencias de mensagens de erro. regerror recebe o código de erro, errcode, o buffer modelo, preg, um ponteiro para um buffer de seqüencia de caracteres, errbuf, e o tamanho do 'buffer' de seqüencia, errbuf_size. Retorna o tamanho de errbuf requerido para conter uma seqüencia de mensagem de erro terminada em nulo. Se errbuf e errbuf_size não são zero, errbuf é preenchido com os primeiros errbuf_size - 1 caracteres da mensagem de erro e um nulo de terminação.

LIBERAÇÃO DO BUFFER MODELO POSIX
Fornecendo regfree com um buffer modelo pré-compilado, preg liberará a memória alocada para o buffer modelo pelo processo de compilação, regcomp.

VALORES RETORNADOS
regcomp retorna zero para uma compilação bem-sucedida ou um código de erro em caso de falha. regexec retorna zero para um casamento bem-sucedido ou REG_NOMATCH para falha.

ERROS
Os seguintes erros podem ser retornados por regcomp:

REG_BADRPT
    Uso inválido de operadores de repetição, como o uso de `*' como o primeiro caractere.

REG_BADBR
    Uso inválido de operador de referência retroativa.

REG_EBRACE
    Operadores de intervalo com colchetes descasados.

REG_EBRACK
    Operadores de lista com colchetes descasados.

REG_ERANGE
    Uso inválido do operador de faixa, por exemplo, o ponto final da faixa ocorre antes do ponto inicial.

REG_ECTYPE
    Nome de classe de caractere desconhecido.

REG_ECOLLATE
    Elemento de ordenação inválido.

REG_EPAREN
    Operadores de grupo com parênteses descasados.

REG_ESUBREG
    Referência retroativa inválida a uma subexpressão.

REG_EEND
    Erro não específico. Este não é definido pelo POSIX.2.

REG_EESCAPE
    Barra invertida perdida.

REG_BADPAT
    Uso inválido de operadores de modelo, tais como grupo ou lista.

REG_ESIZE
    Expressão regular compilada requer um buffer modelo maior de 64Kb. Isto não é definido pelo POSIX.2.

REG_ESPACE
    As rotinas regex rodaram fora de memória.

DE ACORDO COM
POSIX.2.

VEJA TAMBÉM
regex(7), manual do regex GNU.

TRADUZIDO POR LDP-BR em 09/08/2000.

  Tradução:
Rubens de Jesus Nogueira <darkseid99@usa.net>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>