trusty (3) regex.3.gz

Provided by: manpages-pt-dev_20040726-4_all bug

NOME

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

SINOPSE

       #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 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:

       REG_EXTENDED
              Usa POSIX Sintaxe de Expressões Regular Estendidas quando interpreta regex.  Se  não  for  setado,
              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 substrings 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 esta flag setada.

       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 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.

CASAMENTO DO REGEX POSIX

       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.

       REG_NOTBOL
              O operador de "casamento com início de linha" sempre falha  em  encontrar  (mas  veja  a  flag  de
              compilação  REG_NEWLINE  acima).  Esta flag pode ser usada quando porções diferentes de uma string
              são passadas para regexec e o início da string 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  a  flag  de
              compilação REG_NEWLINE acima).

   COMPENSAÇÕES DE BYTE
       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.

              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  substring
       dentro da string.  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
       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.

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.

VALOR DE RETORNO

       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.

CONFORME

       POSIX.2

BUGS

       Correntemente  (visão  instantânea  980503 da libc GNU), a libc GNU não suporta elementos de ordenação em
       expressões regulares.

VEJA TAMBÉM

       regex(7), manual do regex GNU

TRADUZIDO PELO LDP-BR EM 09/08/2000

       RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradução) XXXXXX XX  XXXXX  XXXXXXXX  <xxxxxxxxxx@xxx.xxx>
       (revisão)