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)