Retourner aux forums || Retourner au forum Programmation.perl
J'ai un problème d'expression régulière.
Je veux une expression qui reconnaisse par exemple "lockdev-1.0.0-1.2" mais pas "lockdev-devel-1.0.0-1.2". (Après, ce sera à généraliser pour d'autre termes que lockdev, mais ce ne sera plus un problème).
Cette expression sera utilisée dans une syntaxe du style:
if ("lockdev" =~ /$maJolieExpression/) {
print "OK\n";
}
else {
print "KO\n";
}
Cela interdit l'usage de syntaxe du style !~ ou des if imbriqués.
Ce que j'ai tenté, mais qui ne passe pas:
/lockdev(^-devel)/
/lockdev.*[^(-devel)]/
/lockdev.*[^\(-devel\)]/
/lockdev.*(-devel){0}/
avec différents modificateurs de gloutonnerie.
Est-ce que quelqu'un saurait comment faire ça?
Il obtiendra mon respect inconditionnel sur 7 générations.
> Lire le message (4 commentaires, moyenne: 3,8).
Extrait de man perlre
"(?!motif)"
Une assertion de longueur nulle pour tester l'absence de
quelque chose en avant. Par exemple, "/foo(?!bar)/" reconnaît
toutes les occurrences de "foo" qui ne sont pas suivies de
"bar".
-
[^]Re: Extrait de man perlre
Posté par lom (page perso, ) le 25/05/2005 à 12:51. (lien). Évalué à 3.Tout simplement...
"Gloire à toi, je me prosterne à tes pieds que je suis indigne de baiser, et les mots manquent à mon vocabulaire embryonnaire pour traduire l’admiration d’airain et la reconnaissance de degré très élevée que je porte à ta personne."
Re: regexp
Salut,
Il y a en effet la possibilité d'utiliser l'assertion décrite dans le commente précédent : "(?!motif)"
Sinon tu devrais pouvoir aussi t'en sortir de cette manière :
J'ai testé avec la commande UNIX egrep :
$ echo "lockdev-1.0.0-1.2" | egrep 'lockdev(-[0-9])+'
lockdev-1.0.0-1.2
$ echo "lockdev-devel-1.0.0-1.2" | egrep 'lockdev(-[0-9])+'
Voilà dans le deuxième cas l'expression n'est pas reconnue.
++
-
[^]Re: regexp
Posté par lom (page perso, ) le 25/05/2005 à 13:10. (lien). Évalué à 1.Salut,
Effectivement, ta solution marche dans ce cas, mais elle est trop spécifique à l'exemple que j'ai proposé.
La solution avec (?!motif) est la meilleure dans mon cas.
En tout cas, merci.
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.perl



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.