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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
$ echo "[(3)(2)(0)(7)]" | grep -E "^\[(\(-?[0-9]+(\.[0-9]+)?\)){2}\([0-9]\)\(-?[0-9]+(\.[0-9]+)?\)\]$"
//dans le terminal

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.