[RegEx] Supprimer les espaces multiples

Supprimer les espaces multiples [RegEx] - Divers - Programmation

Marsh Posté le 21-02-2011 à 17:44:41    

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

Reply

Marsh Posté le 21-02-2011 à 17:44:41   

Reply

Marsh Posté le 21-02-2011 à 19:23:30    

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é!  --
Reply

Marsh Posté le 22-02-2011 à 00:09:19    

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

Reply

Marsh Posté le 24-02-2011 à 21:12:09    

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:]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed