C:
Usando expressões regulares
Como fazer:
Para usar expressões regulares em C, você trabalhará principalmente com a biblioteca regex POSIX (<regex.h>
). Este exemplo demonstra correspondência de padrões básica:
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
int main(){
regex_t regex;
int return_value;
char *pattern = "^a[[:alnum:]]"; // Padrão para combinar strings que começam com 'a' seguido por caracteres alfanuméricos
char *test_string = "apple123";
// Compilar a expressão regular
return_value = regcomp(®ex, pattern, REG_EXTENDED);
if (return_value) {
printf("Não foi possível compilar o regex\n");
exit(1);
}
// Executar a expressão regular
return_value = regexec(®ex, test_string, 0, NULL, 0);
if (!return_value) {
printf("Combinação encontrada\n");
} else if (return_value == REG_NOMATCH) {
printf("Nenhuma combinação encontrada\n");
} else {
printf("Falha na combinação do regex\n");
exit(1);
}
// Liberar a memória alocada pelo regex
regfree(®ex);
return 0;
}
Saída de amostra para uma string que combina (“apple123”):
Combinação encontrada
E para uma string que não combina (“banana”):
Nenhuma combinação encontrada
Aprofundamento:
Expressões regulares em C, como parte do padrão POSIX, oferecem uma maneira robusta de realizar combinação e manipulação de strings. Contudo, a API da biblioteca regex POSIX em C é considerada mais complicada do que aquelas encontradas em linguagens projetadas com recursos de manipulação de strings de primeira classe, como Python ou Perl. A sintaxe para padrões é semelhante entre as linguagens, mas C requer gerenciamento manual de memória e mais código boilerplate para preparar, executar e limpar após o uso de padrões regex.
Apesar desses desafios, aprender a usar regex em C é gratificante, pois aprofunda o entendimento de conceitos de programação de baixo nível. Além disso, abre possibilidades para programação em C em áreas como processamento de texto e extração de dados onde regex é indispensável. Para padrões mais complexos ou operações regex, alternativas como a biblioteca PCRE (Perl Compatible Regular Expressions) podem oferecer uma interface mais rica em recursos e um pouco mais fácil, embora requeira a integração de uma biblioteca externa ao seu projeto C.