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 - Expression régulière


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Par défaut PLSQL - Expression régulière
    Bonjour,

    Je voudrai controler en PLSQL qu'une chaine contient
    -plusieurs caractères alpha sauf la lettre F
    -plusieurs caractères numériques
    -la vigule si celle si est placée entre 2 numérique

    j'ai essayé ce script, mais il ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SET SERVEROUTPUT ON
    DECLARE
        s VARCHAR2(100) := 'AB1,CDDODSDDS';
        tmp NUMBER;
    BEGIN
    tmp := regexp_instr( s, '[^[[A-EG-Z0-9]*]]');
    DBMS_OUTPUT.PUT_LINE( 'TMP=' || tmp );
    END;
    /
    Merci de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2008
    Messages : 46
    Par défaut
    Bonjour,

    Arretes moi si je me trompes mais en utilisant regexp_instr rien ne vous garantit que la chaine de caractere correspond a ce que vous desirez tester.

    Vous pourriez avoir une occurence correcte du pattern voulu ET suivie de tout et n'importe quoi.

    Comme ca je penserais a un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN regexp_like(...) THEN 1 ELSE 0 END

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select regexp_instr('TO2,5TO','[^A-EG-Z0-9,]|([^0-9],|,[^0-9])')
      from dual

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Par défaut
    Merci c'est impeccable

  5. #5
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select regexp_instr('TO2,5TO','[^A-EG-Z0-9,]|([^0-9],|,[^0-9])')
      from dual
    Est-ce possible de traduire cette expression ?

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    On cherche dans la chaîne des caractères à analyser
    • un caractère qui n'est pas (^) dans le domaine défini [^A-EG-Z0-9,]
      ou (|)
    • une virgule qui n'est pas précédée par un caractère numérique [^0-9],
      ou
    • une virgule qui n'est pas suivie par un caractère numérique ,[^0-9]

    Si c'est le cas le résultat de la fonction regexp_instr sera supérieur à zéro.

  7. #7
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Citation Envoyé par mnitu Voir le message
    On cherche dans la chaîne des caractères à analyser
    • un caractère qui n'est pas (^) dans le domaine défini [^A-EG-Z0-9,]
      ou (|)
    • une virgule qui n'est pas précédée par un caractère numérique [^0-9],
      ou
    • une virgule qui n'est pas suivie par un caractère numérique ,[^0-9]

    Si c'est le cas le résultat de la fonction regexp_instr sera supérieur à zéro.
    Limpide
    Merci à vous mnitu
    Cordialement
    @argoet

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/08/2010, 10h39
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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