A
linguagem C, em seu padrão, possui o
scanf, que é o mais próximo que a Linguagem C, em si, chega de expressões regulares. Um exemplo seria ignorar determinados caracteres, ao ler o buffer do teclado.
Usaremos, como eu apresentei anteriormente, o ^, para ignorar. Para uma leitura simples, fazemos algo como:
/* input1.c */
#include <stdio.h>
int main(){
char name[20];
printf("What is your name? ");
scanf("%s",&name);
printf("%s\n",name);
return 0;
}
Para compilarmos e executarmos:
gcc input1.c
$ ./a.out
Saída:
What is your name? Andre123
Andre123
Como vocês podem observar, eu fiz uma leitura simples, sem fazer quaisquer tipo de filtragem. Observem também que eu inseri números ao meu nome. Pois bem, vamos agora ignorar números na leitura, visto que não queremos que o usuário digite números. Faríamos algo como:
/* input2.c */
#include <stdio.h>
int main(){
char name[20];
printf("What is your name? ");
scanf("%[^0-9]s",&name);
printf("%s\n",name);
return 0;
}
Para compilar e executar:
gcc input2.c
$ ./a.out
Saída:
What is your name? Andre123
Andre
Como vocês podem ver, na entrada (input) eu inseri números junto ao meu nome mas, ao fazer a leitura do buffer enviado pelo teclado, os números de 1 a 9 foram ignorados, como sugerimos no scanf.
Agora que tivemos o nosso primeiro contato com as tão citadas expressões regulares, não podemos deixar de conhecer o arquivo cabeçalho regex.h. Na próxima página, poderemos, sem demasiados problemas, trabalhar com o este.
O
Elgio Schlemer escreveu um artigo extremamente interessante sobre o assunto, e que eu não poderia deixar de referenciar. Sugiro a leitura, será bastante esclarecedora: