Expression regulieres

Fermé
fleche - 1 juin 2006 à 10:15
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 juin 2006 à 16:50
bonjour,

je cherche la synthaxe pour réaliser une expression réguliere pour determiner n'importe quel chiffre sauf 21, 23, 25, 80 et 115 !!

J'avaous que je misère bien comme il faut...

si quelqu'un a unbe idee

Merci
++

4 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
1 juin 2006 à 10:41
La question c'est: Est-ce qu'il n'y a pas de solution plus simple et efficace que les regexp ?

Moi en Python, je ferais:

if valeur not in (21, 23, 25, 80,115):
   ...


Et voilà !

C'est très simple, et c'est beaucoup plus rapide qu'une regexp.
0
je crois que j'ai oublié une grosse précision, c'est que c'est du PERL que je fais !!

lol
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
1 juin 2006 à 10:45
ouf... ça fait un moment que je n'ai plus fait de perl.

Mais en perl, il y a également les tableaux et les tableaux associatifs.

ça peut être un moyen très rapide pour savoir si une valeur fait partie d'une liste ou non.

Les regexp ont un coût (construction d'une machine à états en fonction de ton expression régulière, etc.)
Souvent avec quelques manipulations de chaîne et tableau, c'est plus efficace.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
1 juin 2006 à 16:50
Salut,

une regex peut être /2[135]|80|115/

En fait ce n'est pas vraiment une regex (à part la classe de caractères c'est une simple énumération des chiffres, donc je ne trouve pas interessant de faire une regex pour ça.

Si tu fais une liste tu peux vérifier pour chaque élément de la liste mais dans ce cas le coût sera plus grand.

Maintenant il faut aussi veiller à l'utilisation de la regex ainsi que la façon de la rediger.

Donne plutôt les données que tu as en entrée (un fichier ou la chaîne) et je vais essayer de trouver une solution optimale.

En général le coût des regex en Perl est dû à l'utilisation des variables $', $` et $& mais normalement dans les dernières versions de Perl il y a des optimisations.

Bien sûr qu'une solution avec des hash peut être envisageable mais il faut savoir ce qu'on traite. (Qui ne pense pas en hash ne pense pas en Perl).

lami20j
0