Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2361 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [RegEx] Supprimer les espaces multiples

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RegEx] Supprimer les espaces multiples

n°2058490
weed
Posté le 21-02-2011 à 17:44:41  profilanswer
 

Hello tout le monde,  
 
J'ai un champs qui est mal formaté. Je souhaiterai supprimer tous les espaces en doublons par un seul espace (ou meme un retour chariot soit chr(13) ).  
 
Exemple de chaine : "tototo          totototot      tata"
 
Sous Oracle, on utilise la commande REGEXP_REPLACE.  
 
Expression simple fonctionnel :  

Code :
  1. select REGEXP_REPLACE('texte1      texte2      texte3', 'te', 'huh') from dual;


 
[:blank:] est la classe utilisé représentant l'espace : http://www.dba-oracle.com/t_regular_expressions.htm
 
Je cherche à supprimer un espace ou plusieurs de suite par un seul espace (ou retour chariot).  
 
 
J'utilise donc l'expression pour signifier 2 ou plus ..

Code :
  1. select REGEXP_REPLACE('texte1      texte2      texte3', [:blank:]{2,n}, 'huh') from dual;


 
mais j'obtiens le message d'erreur : ORA-00936: expression absente
Je suis allé regardé l'explication de cette erreur mais cela ne m'aide pas plus : http://ora-00936.ora-code.com/
 
J'ai essayé aussi de doubler les [ ] mais ce n'est pas mieux :  

Code :
  1. select REGEXP_REPLACE('texte1      texte2      texte3', [[:blank:]]{2,n}, 'huh') from dual;


 
Avez vous une idée de comment supprimer les espaces en doublons

mood
Publicité
Posté le 21-02-2011 à 17:44:41  profilanswer
 

n°2058523
gilou
Modérateur
Modzilla
Posté le 21-02-2011 à 19:23:30  profilanswer
 

Ca a l'air pourtant clair dans la doc Oracle: http://download.oracle.com/docs/cd [...] ons130.htm
SELECT
  REGEXP_REPLACE('texte1      texte2      texte3', '( ){2,}', ' ') "REGEXP_REPLACE"
  FROM DUAL;
 
Bon, je sais pas a quoi correspond le "REGEXP_REPLACE" qui suit l'appel de la procédure (le nom de la nouvelle colonne ainsi générée, on dirait, au vu de http://www.dba-oracle.com/t_regula [...] _index.htm ), c'est probablement son absence qui déclenche l'erreur, mais je suppose que tu sauras adapter à ton besoin.
Noter que  
SELECT
  REGEXP_REPLACE('texte1      texte2      texte3', '[:space:]{2,}', ' ') "REGEXP_REPLACE"
  FROM DUAL;
devrait coller aussi.
A+,


Message édité par gilou le 21-02-2011 à 19:31:29

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2058560
weed
Posté le 22-02-2011 à 00:09:19  profilanswer
 

Ahh, je n'avais pas vu le dernier exemple de la doc Oracle.  
Oki merci Gilou, je teste cela demain matin au taff.  
Merci

n°2059464
weed
Posté le 24-02-2011 à 21:12:09  profilanswer
 

Gilou, je te remercie c'est ca.  
 
SELECT  
  REGEXP_REPLACE('texte1      texte2      texte3', '( ){2,}', ' ') "REGEXP_REPLACE"  
  FROM DUAL;  
 
Je testerai pas curiosité avec la classe [:space:]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [RegEx] Supprimer les espaces multiples

 

Sujets relatifs
Création de fichier multiples[PHP-RegEx] Remplacer des expressions par des caractères
Supprimer ce qu’il y a entre guillemets ? [ A SUPPRIMER : Solution trouvée]
A supprimer[VBS] Supprimer un bloc de lignes
Supprimer des mots dans une chaine de mots cléssupprimer une valeur d'un tableau (algorithme)
Supprimer une ligne d'une table en php [résolu]Batch Supprimer le caractère = contenu dans un fichier
Plus de sujets relatifs à : [RegEx] Supprimer les espaces multiples


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR