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

NOME

       regcomp, regexec, regerror, regfree - funcoes 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,C~AO DO REGEX POSIX

       regcomp e usado para compilar uma expressao regular para um formato que
       e apropriado para buscas subsequentes de regexec.

       regcomp e fornecido com preg, um  ponteiro  para  uma  area  padrao  de
       armazenamento  de buffer; regex, um ponteiro para a string terminada em
       nulo e cflags, flags usadas para determinar o tipo de compilacao.

       Todas as buscas de expressao regular precisam ser feitas atraves de  um
       buffer-modelo  compilado, portanto regexec sempre precisa ser fornecido
       com o endereco de um buffer padrao de regcomp inicializado.

       cflags pode ser um 'OU'bit-a-bit de um ou mais dos seguintes itens:

       REG_EXTENDED
              Usa  POSIX  Sintaxe  de  Expressoes  Regular  Estendidas  quando
              interpreta  regex.   Se  nao  for  setado,  POSIX  A  sintaxe de
              Expressoes Regulares Basicas e usada.

       REG_ICASE
              Nao diferencia maiusculas de minusculas. Buscas  sequenciais  de
              regexec usando este buffer padrao serao insensiveis a caixa.

       REG_NOSUB
              O  suporte  para enderecamento de substrings de resultados nao e
              requerido.  Os parametros  nmatch  e  pmatch  para  regexec  sao
              ignorados  se  o  buffer padrao fornecido foi compilado com esta
              flag setada.

       REG_NEWLINE
              Operadores de "casamento com qualquer caractere" nao  casam  com
              um caractere de nova linha.

              Uma lista de nao-casamento ([^...])  que nao contem um caractere
              de nova linha nao encontra um caractere de nova linha.

              Operador de "casamento com inicio  de  linha"  (^)  casa  com  a
              string vazia imediatamente depois de um caractere de nova linha,
              independente se eflags, as flags de execucao de regexec,  contem
              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 contem REG_NOTEOL.

CASAMENTO DO REGEX POSIX

       regexec  e  usado para encontrar uma string terminada em nulo no buffer
       padrao pre-compilado, preg.   nmatch  e  pmatch  sao  usados  para  dar
       informacoes  a  respeito da posicao de qualquer casamento.  eflags pode
       ser um 'OU'bit-a-bit de um ou ambos REG_NOTBOL e REG_NOTEOL que  causam
       mudancas no comportamento de casamento descrito abaixo.

       REG_NOTBOL
              O  operador  de  "casamento com inicio de linha" sempre falha em
              encontrar (mas veja a flag  de  compilacao  REG_NEWLINE  acima).
              Esta flag pode ser usada quando porcoes diferentes de uma string
              sao passadas para regexec e o inicio  da  string  nao  pode  ser
              interpretada como o comeco da linha.

       REG_NOTEOL
              O  operador  de  "casamento  com o fim da linha" sempre falha em
              encontrar (mas veja a flag de compilacao REG_NEWLINE acima).

   COMPENSA,C~OES DE BYTE
       A menos que REG_NOSUB tenha sido setado para a  compilacao  do  buffer-
       modelo,  e  possivel obter informacoes sobre enderecamento de casamento
       de substrings.  pmatch precisa ser dimensionado  para  ter  pelo  menos
       nmatch  elementos.   Estes sao preenchidos por regexec com enderecos de
       casamento de substrings. Quaisquer elementos  de  estrutura  nao-usados
       conterao o valor -1.

       A estrutura regmatch_t que e o tipo de pmatch e definida em regex.h.

              typedef struct
              {
                regoff_t rm_so;
                regoff_t rm_eo;
              } regmatch_t;

       Cada  elemento  rm_so  que  nao  e  -1  indica a compensacao inicial do
       proximo maior casamento de substring  dentro  da  string.   O  elemento
       rm_eo relativo indica a compensacao final do casamento.

REPORTAGEM DE ERROS POSIX

       regerror  e  usado  para  transformar  os codigos de erro que podem ser
       retornados por regcomp e regexec para strings de mensagens de erro.

       regerror recebe o codigo 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 nao sao  zero,  errbuf  e  preenchido  com  os  primeiros
       errbuf_size - 1 caracteres da mensagem de erro e um nulo de terminacao.

LIBERA,C~AO DO BUFFER MODELO POSIX

       Fornecendo  regfree com um buffer modelo pre-compilado, preg liberara a
       memoria alocada para o  buffer  modelo  pelo  processo  de  compilacao,
       regcomp.

VALOR DE RETORNO

       regcomp  retorna  zero para uma compilacao bem-sucedida ou um codigo 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  invalido de operadores de repeticao, como o uso de `*' como
              o primeiro caractere.

       REG_BADBR
              Uso invalido de operador de referencia retroativa.

       REG_EBRACE
              Operadores de intervalo com colchetes descasados.

       REG_EBRACK
              Operadores de lista com colchetes descasados.

       REG_ERANGE
              Uso invalido 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 ordenacao invalido.

       REG_EPAREN
              Operadores de grupo com parenteses descasados.

       REG_ESUBREG
              Referencia retroativa invalida a uma subexpressao.

       REG_EEND
              Erro nao especifico. Este nao e definido pelo POSIX.2.

       REG_EESCAPE
              Barra invertida perdida.

       REG_BADPAT
              Uso invalido de operadores de modelo, tais como grupo ou lista.

       REG_ESIZE
              Expressao  regular  compilada  requer  um buffer modelo maior de
              64Kb.  Isto nao e definido pelo POSIX.2.

       REG_ESPACE
              As rotinas regex rodaram fora de memoria.

CONFORME

       POSIX.2

BUGS

       Correntemente (visao instantanea 980503 da libc GNU), a  libc  GNU  nao
       suporta elementos de ordenacao em expressoes regulares.

VEJA TAMB'EM

       regex(7), manual do regex GNU

TRADUZIDO PELO LDP-BR EM 09/08/2000

       RUBENS  DE  JESUS  NOGUEIRA  <darkseid99@usa.net>  (traducao) XXXXXX XX
       XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisao)