[C] je ne sais pas comment créer cette expression - [RESOLU] expression régulière

Bonjour,

voila j’utilise regcomp/regexec sous linux et je veux pouvoir trouver dans une chaîne une expression régulière, la voici :

je dois trouver : ecer, emer, ener, eper, eser, ever ou bien aussi evrer

on voit que pour trouver ca c’est facile mais sauf la dernière qui complique les choses.

pour l’instant j’ai ca : e[cmnpsv]er$ qui me permet de trouver tous les 1er sauf le dernier. je ne sais pas comment rechercher le dernier, quelque peut m’aider ? :??:

Si c’est l’unique occurence à 5 lettres, autant la marquer explicitement:

e[cmnpsv]er$ | evrer

Ou sinon:

e(c|m|n|p|s|v|vr)er$

Dans le genre compliqué jeanguy…

e(vr|[cmnpsv])er$

quand même :slight_smile:

En effet, je n’avais pas pensé à imbriquer dans ce sens là.

aucun des 3 ne fonctionnent chez moi :’(

j’ai l’impression que le pipe | ne marche pas :neutre:

vous ne connaissez pas un bon site qui explique les expressions régulières en C ? car je connais developpez.com mais ya pas tout. et sinon sur le net c’est surtout pour du PHP :confused:

Me semble que ce sont des expression régulières unix :neutre:
http://www.grymoire.com/Unix/Regular.html
http://en.wikipedia.org/wiki/Regular_expression
:slight_smile:

Tu utilises quelles librairies?

Ca peut être le ‘+’ au lieu de |.

je vais tester le + pour voir. edit: non ça marche pas mieux :’(

je ne sais pas quelle bibliothèque j’utilise. Normallement c’est dans la libc non ? :neutre:
je suis sous Ubuntu 6.10… et j’inclus le fichier <regex.h> :neutre:

Pas de regex dans la libc (enfin, si on parle de C-ANSI)

try un man regex.h pour la syntaxe à tout hasard.

j’ai aucune page de man sur mon ubuntu, qu’est ce que je dois installer pour ? (les rares pages que j’ai sont en anglais en +)

c’est bon j’ai installé. mais man regex me renvoi sur les fonctions regcomp et regexec, mais ne parle absolument pas de la syntaxe…

bon j’ai réussi à résoudre mon problème en mettant les caractères d’échappement \ devant les parenthèses et le pipe :heink:

du coup j’ai ca : e\([cmnpsv]\|vr\)er$

:neutre:

bizarre. Inverse quand même : e\(vr\|[cmnpsv]\)er$

(je trouve ça mieux)

ah ba ca pour etre bizarre ! :pt1cable: alors que les crochets ya pas besoin de mettre de \ devant. 'fin bref

euh sinon ca change rien ta syntaxe et la mienne ?

teste et tu sauras ! :slight_smile: