REGCOMP(3) | Manual do Programador Linux | REGCOMP(3) |
regcomp, regexec, regerror, regfree - funções do regex POSIX
#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);
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 string terminada em nulo e cflags, flags 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:
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 string 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 string vazia imediatamente antes de um caractere de nova linha, independente se eflags contém REG_NOTEOL.
regexec é usado para encontrar uma string 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.
A menos que REG_NOSUB tenha sido setado para a compilação do buffer-modelo, é possível obter informações sobre endereçamento de casamento de substrings. pmatch precisa ser dimensionado para ter pelo menos nmatch elementos. Estes são preenchidos por regexec com endereços de casamento de substrings. 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.
Cada elemento rm_so que não é -1 indica a compensação inicial do próximo maior casamento de substring dentro da string. O elemento rm_eo relativo indica a compensação final do casamento.
regerror é usado para transformar os códigos de erro que podem ser retornados por regcomp e regexec para strings de mensagens de erro.
regerror recebe o código de erro, errcode, o buffer modelo, preg, um ponteiro para um buffer de string de caracteres, errbuf, e o tamanho do buffer de string, errbuf_size. Retorna o tamanho de errbuf requerido para conter uma string 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.
Fornecendo regfree com um buffer modelo pré-compilado, preg liberará a memória alocada para o buffer modelo pelo processo de compilação, regcomp.
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.
Os seguintes erros podem ser retornados por regcomp:
POSIX.2
Correntemente (visão instantânea 980503 da libc GNU), a libc GNU não suporta elementos de ordenação em expressões regulares.
regex(7), manual do regex GNU
RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradução) XXXXXX XX XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisão)
8 de maio de 1998 | GNU |