Expressions régulières en langage C
Bonjour à tous! :|
Je développe un projet en C et j'ai besoin de reconnaître une certain format de
chaîne de caractères. Je me suis donc tourné vers les expressions régulières.
Voici un exemple de chaîne que je veux reconnaître: "[(3)(2)(0)(7)]".
J'ai donc écrit cette regex:
"^\[(\(-?[0-9]+(\.[0-9]+)?\)){2}\([0-9]\)\(-?[0-9]+(\.[0-9]+)?\)\]$"
Cependant, la reconnaissance ne marche pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include <sys/types.h>
#include <regex.h>
.
.
.
const char regex_str[] = "^\[(\(-?[0-9]+(\.[0-9]+)?\)){2}\([0-9]\)\(-?[0-9]+(\.[0-9]+)?\)\]$";
regex_t *atom_mbr_regex = malloc(sizeof(regex_t));
.
.
.
regcomp(atom_mbr_regex, regex_str, REG_EXTENDED);
regexec(atom_mbr_regex, "[(3)(2)(0)(7)]", 0, NULL, 0); |
regexec me retourne: "No match". J'ai même essayé toutes les combinaisons de drapeaux mais sans succès.
J'ai pourtant testé avec bash dans le terminal et aussi en PHP; la reconnaissance marche parfaitement.
Code:
$ echo "[(3)(2)(0)(7)]" | grep -E "^\[(\(-?[0-9]+(\.[0-9]+)?\)){2}\([0-9]\)\(-?[0-9]+(\.[0-9]+)?\)\]$"
//dans le terminal
Code:
preg_match("#^\[(\(-?[0-9]+(\.[0-9]+)?\)){2}\([0-9]\)\(-?[0-9]+(\.[0-9]+)?\)\]$#", "[(3)(2)(0)(7)]");
//dans un script PHP
Je serais très enchanté qu'on me montre là où je me suis trompé (ou bien s'il y a un bug) pour que je puisse progresser dans mon projet. ;)