IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

[PLSQL-REGEXP]Problème dans une expression régulière


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut [PLSQL-REGEXP]Problème dans une expression régulière
    Bonjour,

    Je veux tester le format d'une chaine :
    3 caractères numériques suivis de 0 à 24 caractères alphabétique différents sauf les caractères P et X.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT regexp_instr('001ABC','^[0-9]{3}[A-OQ-WY-Z]*') FROM DUAL;
    Cette requête ne fonctionne pas :
    Si je passe 001 c'est OK
    Si je passe 001- C'est OK malgré le tiret ??
    Par contre je ne sais pas du tout comment faire pour tester l'unicité d'une lettre dans la chaîne.
    Si quelqu'un peut me dépanner

    Merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Janvier 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 135
    Points : 234
    Points
    234
    Par défaut
    Citation Envoyé par henri93 Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT regexp_instr('001ABC','^[0-9]{3}[A-OQ-WY-Z]*') FROM DUAL;
    ...
    Par contre je ne sais pas du tout comment faire pour tester l'unicité d'une lettre dans la chaîne.
    Je ne pense pas qu'il existe un moyen facile. Vous pouvez écrire une fonction qui analyse chaque lettre. Le plus simple (sans tenir compte de la performance) est, pour chaque lettre, vous vérifiez son d'un autre occurrence de la position actuelle jusqu'à la fin avec instr().

  3. #3
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    Il faut préciser qu'après les lettres c'est la fin de la chaine avec un $:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT regexp_instr('001ABC','^[0-9]{3}[A-OQ-WY-Z]*$') FROM DUAL;
    Il manque aussi le contrôle sur le nombre de lettres (0 à 24), mais je pense qu'on peut le faire avec un LENGTH "classique".

  4. #4
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    Merci pour les différentes pistes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de capture dans une expression régulière
    Par waeselynck.raphael dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/02/2009, 11h34
  2. Réponses: 5
    Dernier message: 31/08/2006, 13h34
  3. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  4. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  5. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo