Antes de mais nada, para os mais curiosos, vocês podem ver o conteúdo do arquivo cabeçalho regex.h através do comando:
cat /usr/include/regex.h
Para que possamos usufruir dos recursos disponibilizados pelo arquivo cabeçalho regex.h, precisamos incluir este arquivo ao nosso código fonte. Para isso,
bastará colocar a linha:
#include <regex.h>
Vamos agora declarar uma variável do tipo regex_t. Chamaremos essa variável de "reg":
regex_t reg;
Neste artigo, para que possamos trabalhar com expressões regulares em C, basicamente precisaremos conhecer duas funções, apenas: A regcomp e a
regexec. Uma é responsável pela compilação da expressão regular, e a outra por executá-la (ou casa-la, como chamam aqui no Brasil).
Vale lembrar que ambos retornam 0, caso seu uso seja bem sucedido. Vamos colocar estas funções dentro de uma estrutura de decisão, para que
possamos ter certeza de que não ouve problemas ao compilar e ao "casar" a expressão regular.
Basicamente, o uso destas funções é feito desta forma:
/* compilação da expressão regular */
regcomp(®, <expressão_regular>, REG_EXTENDED|REG_NOSUB)
/* execução da expressão regular */
regexec(®, <text>, 0, (regmatch_t *)NULL,0)
Onde:
- <expressão_regular>, sem as tags (< >), à sua expressão regular, obviamente;
- <texto>, sem as tags, o texto no qual você quer aplicar a expressão regular.
Com isso, você já tem tudo que precisa para usar expressões regulares em C. Para concluir, criaremos um programa para fazer a validação de um e-mail,
que será passado pelo usuário.
#include <stdio.h>
#include <regex.h>
#define EXPR_REG ".+@.+\\.[a-z]+"
int main(){
char mail[40];
regex_t reg;
printf("Seu e-mail: ");
scanf("%s",&mail);
if (regcomp(®, EXPR_REG, REG_EXTENDED|REG_NOSUB) != 0){
printf("Expressao regular invalida!\n");
return 1;
} else {
if ((regexec(®, mail, 0, (regmatch_t *)NULL,
0)) == 0) {
printf("E-mail valido\n");
} else {
printf("E-mail invalido\n");
}
}
return 0;
}
Onde "#define EXPR_REG ".+@.+\\.[a-z]+"", definimos uma macro chamada EXPR_REG, contendo à seguinte expressão regular:
.+@.+\\.[a-z]+
Responsável pela validação do e-mail. O que resta, não tem a ver com o arquivo regex.h em sí, e sim com a linguagem C. Vamos compilar e executar:
gcc file.c -o file
$ ./file
Seu e-mail: andre.rosa36@gmail.com
E-mail valido
Ótimo. Vamos agora inserir um e-mail em um formato inválido:
./file
Seu e-mail: hfuhfuhf887@aaaaaaaaa
E-mail invalido
Pronto! Agora basta se aprofundar e usar de acordo com sua necessidade.
Espero que o artigo tenha cumprido sua meta, que é sanar as demais dúvidas e passar o conteúdo a quem estava perdido com relação a isso.
Não deixe de ler meus demais artigos:
André Rosa.