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 :

Expression régulière dans fonction REGEXP_SUBSTR


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut Expression régulière dans fonction REGEXP_SUBSTR
    Bonjour,

    J'aimerais utiliser la fonction REGEXP_SUBSTR pour sortir d'une chaine un bout de chaine contenu entre parenthèses.

    En fouillant sur le web j'ai trouvé un peu comment construire mon expression régulière mais j'ai beau essayé plusieurs truc j'obtiens toujours null...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select REGEXP_SUBSTR('blabla (CR)','^\([:alpha:]+\)$') from dual
    Vu que je découvre les expressions régulière, je suppose avoir tout faux..

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select regexp_substr('blabla (CR)','\([[:alpha:]]+\)') as col
      from dual;
     
    COL
    (CR)
    Dans votre code, vous demandez à ce que votre parenthèse commence au début de votre chaîne (avec ^) et qu'elle se termine à la fin (avec le $), ce qui n'est pas le cas dans votre exemple.

    Il faut également doubler les crochets pour les types de caractères (une fois pour définir la classe, une autre fois pour définir l'ensemble).

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    Ok j'avais pas bien compris.

    Par contre si je veux uniquement le texte qui se trouve entre les parenthèses mais sans celle ci, comment faire?

    Merci beaucoup pour ta réponse.

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select regexp_replace('Blabla (CR)', '.*\((.*)\).*','\1') from dual;
     
    select translate(regexp_substr('Blabla (CR)','\(.+\)'),'z()','z') from dual;

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    Bon je n'avais pas pensé au cas ou ma chaîne contiendrai deux sous chaines entre parenthèses...

    Si j'ai la chaine '(CR) blabla (CD)' il faudrai que je retrouve uniquement CR.

    Merci pour tes réponses OracleFan

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT translate(regexp_substr('blabla (CR)  blabla (CD)','\([[:alpha:]]+\)'), '-()', '-') AS A
      FROM dual;
    devrait faire l'affaire...

    Bien à toi,

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/12/2007, 23h26
  2. Utilisation d'expressions régulières dans GTK
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 11/04/2007, 19h24
  3. [RegEx] Utiliser une expression régulière dans une requête
    Par Tobleron dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2007, 19h00
  4. Réponses: 5
    Dernier message: 30/10/2006, 13h59
  5. Réponses: 1
    Dernier message: 03/02/2006, 12h35

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