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
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
A voir également:
- Expression regulieres
- Expression de recherche - Guide
- Expression encoder - Télécharger - Divers Utilitaires
- T'as du ping expression ✓ - Forum Réseau
- Modèle fiche expression de besoin excel - Forum Word
- Mettre en image expression ✓ - Forum Jeux vidéo
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
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:
Et voilà !
C'est très simple, et c'est beaucoup plus rapide qu'une 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.
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
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.
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.
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
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
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