Regexp en c sans librairies

Soyez le premier à donner votre avis sur cette source.

Vue 8 718 fois - Téléchargée 437 fois

Description

C'est un code que je suis en train de completer en fonction de mes besoins sur des regexp, je le modifierais au fur et a mesure. Ce que ca fait, c'est que ca lit une regexp, ca la transforme en automate, et ensuite ca regarde si une chaine de caracteres correspond a cette regexp ou pas (en suivant l'automate). Il n'y a bien sur pas toutes les possibilites des regexp, mais ca va venir au fur et a mesure. C'est rapide pour le moment car je n'ai pas envie d'implementer d'operateurs gloutons (et faire de mon automate un automate non deterministe).

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
3 janvier 2008

merci c'est excellent!!!
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

RE

l'expression reguliere "a" ne matche que la chaine "a"
car le match actuellement porte du debut a la fin de la chaine et si tu veux matcher a, precise que le reste n'importe peu avec a[a-z]* par exemple et plus tard avec a.*

Emma
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

struct regexp * r = regexpCreate("a"); if (regexpStartMatches(r, "abcd")) { ... } else { ... }

c'est ce que j'ai fait et ben, ça match pas ???

En fait, j'utilise la lib pcre pour mes regexp et je voulais tester ton programme, juste pour voir ce que cela donnais.

Bertrand.
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

Salut,


tout est dans le main deja, mais si tu veux tester sur l'expression reguliere a, si la chaine abcd correspond tu fais struct regexp * r = regexpCreate("a"); if (regexpStartMatches(r, "abcd")) { ... } else { ... }
la fonction a disposition pour l'instant matche uniquement la chaine complete et il suffirait de faire un for pour pas commencer au debut et ca s'arrete a la fin, donc en fait tu voudrais plutot dire un truc du genre
a.*
ou plus vraisemblablement
a[a-z]*
la, tu trouverais a dans abcd
a toi de tester ca maintenant.

=
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonjour,

voici mon expression régulière "a"
voici ma chaine "abcd" et ben, ça match pas ???

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.