.\" Copyright (C), 1995, Graeme W. Wilford. (Wilf.) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Wed Jun 14 16:10:28 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) .\" Tiny change in formatting - aeb, 950812 .\" Modified 8 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) .\" .\" show the synopsis section nicely .de xx .in \\n(INu+\\$1 .ti -\\$1 .. .TH REGCOMP 3 "8 de maio de 1998" GNU "Manual do Programador Linux" .SH NOME regcomp, regexec, regerror, regfree \- funções do regex POSIX .SH SINOPSE .B #include .sp .xx \w'\fBint\ regcomp(\fR'u .BI "int\ regcomp(regex_t *" preg ", const char *" regex , .BI "int " cflags ); .xx \w'\fBint\ regexec(\fR'u .BI "int\ regexec(const regex_t *" preg ", const char *" string , .BI "size_t " nmatch ", regmatch_t " pmatch[] , .BI "int " eflags ); .xx \w'\fBsize_t\ regerror(\fR'u .BI "size_t\ regerror(int " errcode , .BI "const regex_t *" preg ", char *" errbuf , .BI "size_t " errbuf_size ); .xx \w'\fBvoid\ regfree(\fR' .BI "void\ regfree(regex_t *" preg ); .SH "COMPILAÇÃO DO REGEX POSIX" .B regcomp é usado para compilar uma expressão regular para um formato que é apropriado para buscas subsequentes de .B regexec. .B regcomp é fornecido com .IR preg , um ponteiro para uma área padrão de armazenamento de buffer; .IR regex , um ponteiro para a string terminada em nulo e .IR 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 .B regexec sempre precisa ser fornecido com o endereço de um buffer padrão de .B regcomp inicializado. .I cflags pode ser um .RB 'OU' bit-a-bit de um ou mais dos seguintes itens: .TP .B REG_EXTENDED Usa .B POSIX Sintaxe de Expressões Regular Estendidas quando interpreta .IR regex . Se não for setado, .B POSIX A sintaxe de Expressões Regulares Básicas é usada. .TP .B REG_ICASE Não diferencia maiúsculas de minúsculas. Buscas sequenciais de .B regexec usando este buffer padrão serão insensíveis à caixa. .TP .B REG_NOSUB O suporte para endereçamento de substrings de resultados não é requerido. Os parâmetros .I nmatch e .I pmatch para .B regexec são ignorados se o buffer padrão fornecido foi compilado com esta flag setada. .TP .B REG_NEWLINE Operadores de "casamento com qualquer caractere" não casam com um caractere de nova linha. Uma lista de não-casamento .RB ( [^...] ) 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" .RB ( ^ ) casa com a string vazia imediatamente depois de um caractere de nova linha, independente se .IR eflags , as flags de execução de .BR regexec , contêm .BR REG_NOTBOL . Operadores de "casamento com fim de linha" .RB ( $ ) casa com a string vazia imediatamente antes de um caractere de nova linha, independente se .IR eflags contém .BR REG_NOTEOL . .SH "CASAMENTO DO REGEX POSIX" .B regexec é usado para encontrar uma string terminada em nulo no buffer padrão pré-compilado, .IR preg . .I nmatch e .I pmatch são usados para dar informações a respeito da posição de qualquer casamento. .I eflags pode ser um .RB 'OU' bit-a-bit de um ou ambos .B REG_NOTBOL e .B REG_NOTEOL que causam mudanças no comportamento de casamento descrito abaixo. .TP .B REG_NOTBOL O operador de "casamento com início de linha" sempre falha em encontrar (mas veja a flag de compilação .B REG_NEWLINE acima). Esta flag pode ser usada quando porções diferentes de uma string são passadas para .B regexec e o início da string não pode ser interpretada como o começo da linha. .TP .B REG_NOTEOL O operador de "casamento com o fim da linha" sempre falha em encontrar (mas veja a flag de compilação .B REG_NEWLINE acima). .SS "COMPENSAÇÕES DE BYTE" A menos que .B REG_NOSUB tenha sido setado para a compilação do buffer-modelo, é possível obter informações sobre endereçamento de casamento de substrings. .I pmatch precisa ser dimensionado para ter pelo menos .I nmatch elementos. Estes são preenchidos por .BR regexec com endereços de casamento de substrings. Quaisquer elementos de estrutura não-usados conterão o valor -1. A estrutura .B regmatch_t que é o tipo de .I pmatch é definida em .IR regex.h . .RS .B typedef struct .br .B { .br .BI " regoff_t " rm_so ; .br .BI " regoff_t " rm_eo ; .br .B } .B regmatch_t; .RE Cada elemento .I rm_so que não é -1 indica a compensação inicial do próximo maior casamento de substring dentro da string. O elemento .I rm_eo relativo indica a compensação final do casamento. .SH "REPORTAGEM DE ERROS POSIX" .B regerror é usado para transformar os códigos de erro que podem ser retornados por .B regcomp e .B regexec para strings de mensagens de erro. .B regerror recebe o código de erro, .IR errcode , o buffer modelo, .IR preg , um ponteiro para um buffer de string de caracteres, .IR errbuf , e o tamanho do buffer de string, .IR errbuf_size . Retorna o tamanho de .I errbuf requerido para conter uma string de mensagem de erro terminada em nulo. Se .I errbuf e .I errbuf_size não são zero, .I errbuf é preenchido com os primeiros .I "errbuf_size - 1" caracteres da mensagem de erro e um nulo de terminação. .SH "LIBERAÇÃO DO BUFFER MODELO POSIX" Fornecendo .B regfree com um buffer modelo pré-compilado, .I preg liberará a memória alocada para o buffer modelo pelo processo de compilação, .BR regcomp . .SH "VALOR DE RETORNO" .B regcomp retorna zero para uma compilação bem-sucedida ou um código de erro em caso de falha. .B regexec retorna zero para um casamento bem-sucedido ou .B REG_NOMATCH para falha. .SH ERROS Os seguintes erros podem ser retornados por .BR regcomp : .TP .B REG_BADRPT Uso inválido de operadores de repetição, como o uso de .RB ` * ' como o primeiro caractere. .TP .B REG_BADBR Uso inválido de operador de referência retroativa. .TP .B REG_EBRACE Operadores de intervalo com colchetes descasados. .TP .B REG_EBRACK Operadores de lista com colchetes descasados. .TP .B REG_ERANGE Uso inválido do operador de faixa, por exemplo, o ponto final da faixa ocorre antes do ponto inicial. .TP .B REG_ECTYPE Nome de classe de caractere desconhecido. .TP .B REG_ECOLLATE Elemento de ordenação inválido. .TP .B REG_EPAREN Operadores de grupo com parênteses descasados. .TP .B REG_ESUBREG Referência retroativa inválida a uma subexpressão. .TP .B REG_EEND Erro não específico. Este não é definido pelo POSIX.2. .TP .B REG_EESCAPE Barra invertida perdida. .TP .B REG_BADPAT Uso inválido de operadores de modelo, tais como grupo ou lista. .TP .B REG_ESIZE Expressão regular compilada requer um buffer modelo maior de 64Kb. Isto não é definido pelo POSIX.2. .TP .B REG_ESPACE As rotinas regex rodaram fora de memória. .SH "CONFORME" POSIX.2 .SH BUGS Correntemente (visão instantânea 980503 da libc GNU), a libc GNU não suporta elementos de ordenação em expressões regulares. .SH "VEJA TAMBÉM" .BR regex (7), .B "manual do regex GNU" .SH TRADUZIDO PELO LDP-BR EM 09/08/2000 \&\fR\&\f(CWRUBENS DE JESUS NOGUEIRA (tradução)\fR \&\fR\&\f(CWXXXXXX XX XXXXX XXXXXXXX (revisão)\fR