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

SQL Oracle Discussion :

problème expression regulière


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut problème expression regulière
    Bonjour

    J'ai un problème pour écrire un regexp dans une requete pour une proc stock PLSQL :

    j'ai une requête select qui a le critère suivant (simplifié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE REGEXP_LIKE ( TITRE , '^.+' || replace ( (NR.[NUM]),'[NUM]','[:digit:]+' )  || '.+$' )
    L'expression regulière est la suivante après le replace :

    Cette requête est censée me retrouver ce titre :

    PARA(1251\.)DROOPY S (NR.5) GLUCKSBRINGER REDIF 2564
    Or ça ne fonctionne pas...

    Elle fonctionnait avec le critère suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE TITRE LIKE ( '%' || replace ( (NR.[NUM]),'[NUM]','%' )  || '%' )
    Mais celui-ci matchait aussi les cas ou l'expression (NR.[NUM]) était en fin de chaîne...

    Je me demandais si la cause de ce problème n'était pas les parenthèses, qui sont un caractère utilisé par les reg_exp. Mais apparemment même si je les enlève du titre et de l'expression recherchée ça ne fonctionne toujours pas...

    Sans doute est-ce le point ? Comment puis-je faire en sorte qu'il soit considéré comme un caractère et non comme un élément de la regexp ?

    Auriez-vous une idée de solution ?

    Merci à vous

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par Davboc
    PARA(1251\.)DROOPY S (NR.5) GLUCKSBRINGER REDIF 2564
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where titre like '%(NR.5)%'
    Citation Envoyé par Davboc
    (NR.[NUM]),
    c'est quelle syntaxe ça ???

  3. #3
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut
    Une syntaxe perso

    En fait dans notre programme on entre des expressions à supprimer de titres (grosso modo). Pour chaque expression on dit également ou elle se trouve dans le titre : au début, à la fin ou quelquepart au milieu.

    le [NUM] représente un à N numériques, on le traduit ensuite en regexp.
    where titre like '%(NR.5)%'
    fonctionne effectivement, mais il ramène aussi les titres ou (NR.5) se trouve à la fin, ce qu'on ne veut pas. C'est pour cela que je me suis tourné vers les regexp

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where titre like '%(NR.5)___%'
    ?

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    un seul _ suffit

  6. #6
    Membre expérimenté Avatar de Scual
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 149
    Par défaut
    Ou aucun vu qu'il est suivi par un %

  7. #7
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut
    ça marche avec le _ merci

    je ne connaissais pas ce joker en sql

    Merci !

    Question subsidiaire : J'ai cru comprendre que pour Oracle [:digit:] correspond à [0-9] or j'ai des expressions régulières qui fonctionnent avec le 2nd et pas le premier.. Quelle est la différence ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/05/2010, 23h22
  2. Problème expression regulière.
    Par Jonathan.Harvey dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 06/08/2009, 03h02
  3. [RegEx] problème avec expression regulière
    Par teen6517 dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2007, 11h39
  4. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 13h41
  5. Variables et Expression Regulière
    Par Temari dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 01h55

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