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

SAS Base Discussion :

SAS et Regex


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Points : 108
    Points
    108
    Par défaut SAS et Regex
    Bonjour,
    J'ai un soucis lors de la transformation des données monaligne en données multiligne suivant la présence d'un caractère.
    En effet j'ai en point d'entrée les données ci-dessous:

    Code sas : Sélectionner tout - Visualiser dans une fenêtre à part
    <SALGRADE devise="EUR" conti="PESOS" bases="ACTUAL/1972"><pov="NASDAC=" fab="ON" Champ="ASK" demande="0" enchere="BID" fin="0" moyenne="" milieu="0" /></SALGRADE>
    et je voudrais avoir en sortie ces trois lignes (donc en fait un retour à la ligne quand on trouve le caratère "<":

    Code sas : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SALGRADE devise="EUR" conti="PESOS" bases="ACTUAL/1972">
    <pov="NASDAC=" fab="ON" Champ="ASK" demande="0" enchere="BID" fin="0" moyenne="" milieu="0" />
    </SALGRADE>

    j'ai dans une étape data soumis le code :

    Code sas : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if _n_ = 1 then do;
                   retain i0;
    			   i0=prxparse("s/</\n/");
                   if missing(i0) then do;
                      putlog "ERROR: Invalid regexp" i0;
                   end;              
          end;
         /*u=PRXMATCH (i0,texml);*/ /* which returns the position at which the pattern is found: */
    	  call prxchange(i0,-1,texml);

    Mais hélas pas de résultat. Sous notepad++ j’obtiens le résultat en remplaçant < par \n.

    Pouvez-vous m'aider?
    merci d'avance.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Vu que c'est du XML, tu peux peut-être te tourner vers ceci où il est fait mension d'un paramètre INDENT.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,
    Si j'ai bien compris ton problème, l'exemple ci-dessous peut faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    data Exemple;
    length a $250;
    var='<SALGRADE devise="EUR" conti="PESOS" bases="ACTUAL/1972"><pov="NASDAC=" fab="ON" Champ="ASK" demande="0" enchere="BID" fin="0" moyenne="" milieu="0" /></SALGRADE>';
    do i=1 to 999;
    		call scan (var,i,position, length,'><');
    		if not position then leave;
    		var1=cats('<',substrn(var, position, length),'>');
    		if var1='<>' then delete; 
    		output;
    	end;
    	drop i position length;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par s_a_m Voir le message
    Hello,
    Si j'ai bien compris ton problème, l'exemple ci-dessous peut faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    data Exemple;
    length a $250;
    var='<SALGRADE devise="EUR" conti="PESOS" bases="ACTUAL/1972"><pov="NASDAC=" fab="ON" Champ="ASK" demande="0" enchere="BID" fin="0" moyenne="" milieu="0" /></SALGRADE>';
    do i=1 to 999;
    		call scan (var,i,position, length,'><');
    		if not position then leave;
    		var1=cats('<',substrn(var, position, length),'>');
    		if var1='<>' then delete; 
    		output;
    	end;
    	drop i position length;
    run;
    Merci sam,
    Mais tu as définit ici var avec des quotes?

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Oui, vue que c'est une variable caractère !
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33
  2. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  3. connexion SAS/PostgreSQL
    Par boris_ska dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/05/2004, 08h43
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 16h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 11h24

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