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 :

Aide sur expression Régulière PL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Par défaut Aide sur expression Régulière PL
    Bonjour,

    Je ne suis pas forcément très doué pour les expressions régulières, c'est pour cela que je viens soliciter votre aide.

    Dans un traitement de données n'utilisant que les expressions régulières pour extraire des chaînes d'un fichier, je dois pour un numéro de contrat pouvant varier en taille extraire les premiers caractères sauf le dernier.

    La fonction Oracle utilisée est REGEXP_SUBSTR.

    J'arrive bien a sortir le dernier caractère ne pouvant être que 'A' ou 'S', mais je n'arrive pas à faire le contraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select REGEXP_SUBSTR('10913412ASSPARA12A', '[AS]$') from dual
    C'est une base Oracle 10g

    Merci d'avance de votre aide.

  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
    Pas besoin d'expression régulière pour ça, il suffit d'extraite toutes vos données jusqu'à la longueur -1 de votre chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select substr(contrat, 1, length(contrat)-1) as contrat_1
    from (select '10913412ASSPARA12A' as contrat from dual);
     
    CONTRAT_1
    10913412ASSPARA12
    Les expressions régulières sont très coûteuses en terme de performance, à n'utiliser qu'en dernier recours.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Par défaut
    Certes, je suis consciens, que les expressions régulières sont couteuses en temps, cependant, la récupération des données des fichiers se fait via un XML de définition de fichier permettant de spécifier comment récupérer les données depuis un fichier plat et ce qu'il faut en faire avant de les intégrer en base. Une balise <expreg> permet d'extraire des parties de chaine.

    Ce programme PL/SQL, permet en fait d'avoir une interface standard d'importation de contrat dans notre modèle de données, par fichier plat, sans contraindre nos clients à migrer tous leurs flux.

    Je n'ai donc malheureusement pas le choix. Existe-t-il une expression régulière me permettant de retirer le dernier caractère d'une chaine avec REGEXP_SUBSTR??


    Petit Edit :

    Il semble que gérer la suppression du dernier caractère d'une chaine via REGEXP_SUBSTR, soit assez compliqué en fait.

    J'ai donc ajouté la gestion d'une nouvelle balise xml pour ma définition de fichier <substr>1|taille-1</substr>
    Lorsque le mot taille est détecté dans la valeur de la balise, il est remplacé par la valeur de la taille de la chaine complète extraite du fichier, pour ensuite pouvoir faire le substr correctement.


    Merci à Waldar pour avoir pris le temps de répondre

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

Discussions similaires

  1. aide sur expression régulière
    Par paissad dans le forum Langage
    Réponses: 18
    Dernier message: 06/05/2010, 13h12
  2. Besoin d'aide sur expression régulière
    Par tafkap dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 02/02/2010, 16h59
  3. [RegEx] Aide sur expression régulière
    Par mosto dans le forum Langage
    Réponses: 1
    Dernier message: 18/03/2008, 10h58
  4. Aide sur expression Reguliere
    Par chaser_T dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2006, 15h19
  5. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 20h48

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