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

  FORUM HardWare.fr
  Programmation
  Divers

  Expression régulière

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expression régulière

n°2021998
sisier
Posté le 09-09-2010 à 09:52:44  profilanswer
 

Bonjour,
 
Je galère avec une expression régulière pour faire des remplacements dans du texte (avec notepad++).
 
Cela ne doit pas être compliqué mais je sèche malgré les tutos.
 
J'ai une expression de cette forme.
9018016;121.81;243.62;00002114
 
Elle doit devenir :
("9018016",121.81,243.62,00002114)
 
Je sèche pour insérer une chaine de caractère avant mon expression :
J'ai testé ça : ^(.) mais cela me sélectionne mon 1er caractère mais je veux le garder et ne pas le remplacer.
 
Même soucis pour la fin de ma ligne avec cette expression : (.)$
 
Je sèche également pour faire une différenciation entre mon 1er ";" et les autres.
 
Merci pour votre aide
 
 

mood
Publicité
Posté le 09-09-2010 à 09:52:44  profilanswer
 

n°2022038
roondar
Posté le 09-09-2010 à 11:16:06  profilanswer
 

Ma technique n'est pas une expression régulière, mais au moins elle fonctionne :  
awk 'BEGIN { FS = ";" } ; { print "(\""$1"\","$2","$3","$4" )" }'
 
Sinon avec Sed mais elle moins propre
sed -e 's/^/("/g;s/;/",/;s/;/,/g;s/$/)/g'
 
Je doute qu'avec une Regex on puisse le faire d'ailleurs !


Message édité par roondar le 09-09-2010 à 11:21:10
n°2022043
Un Program​meur
Posté le 09-09-2010 à 11:21:03  profilanswer
 

echo "9018016;121.81;243.62;00002114" | sed -e 's/^\([^;]*\)\(;.*\)$/("\1"\2)/' -e 's/;/,/'


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2022053
roondar
Posté le 09-09-2010 à 12:01:16  profilanswer
 

Avec l'exemple de "Un Programmeur", j'ai trouvé l'astuce, cela fonctionne avec Scite mais ca devrait fonctionner aussi avec notepad++.
Recherche : ^\(.*\);\(.*\);\(.*\);\(.*\)
Remplacer par : ("\1",\2,\3,\4)
Mode de recherche: Expression régulière


Message édité par roondar le 09-09-2010 à 12:06:18
n°2022055
sisier
Posté le 09-09-2010 à 12:11:32  profilanswer
 

merci .. c'est compliqué tout ça ^^
 
Sinon sur un autre forum, on m'avait donné ça :
Recherche: ^(\d+)(.*)$
Remplacer: ("\1"\2)
 
Ca fait tout ce que j'ai à faire .. sauf pour changer mes points virgules en virgule.
Dans ce cas la, je peux le faire en une 2ème passe (parce que j'y connais pas grand chose et que je comprends pas la 1ere expression).
 
@roondar : j'ai testé ta 2eme solution .. cela n'a pas l'air de fonctionner avec notepad;  
 
 

n°2022058
roondar
Posté le 09-09-2010 à 12:20:10  profilanswer
 

Dans ce cas là remplace
^(\d+)(.*)$ par ^(.*);(.*);(.*);(.*)$
et ("\1"\2) par ("\1",\2,\3,\4)
 
Ça doit juste être un problème d'échappement des parenthèses.


Message édité par roondar le 09-09-2010 à 12:22:48
n°2022069
sisier
Posté le 09-09-2010 à 13:27:12  profilanswer
 

ça marche.
 
Merci beaucoup ^^

n°2022074
roondar
Posté le 09-09-2010 à 13:39:14  profilanswer
 

Si tu veux un peu mieux comprendre va dans la partie 7 de cette page http://astuces.jeanviet.info/burea [...] egex.htm#7

n°2022145
sisier
Posté le 09-09-2010 à 16:33:49  profilanswer
 

ah merci.. C'est déjà plus clair.
 
je comprenais pas les \1 \2 ...


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

  Expression régulière

 

Sujets relatifs
retrouver mot en php avec expression reguliere[KSH] Find : iname + expression régulière ? - RESOLU -
expression régulière en javascriptexpression reguliere java / ant
expression régulièreChaine de caractère :S + Expression regulière
Expression régulière pour un preg_splitexpression reguliere : recuperer lien internet
expression reguliére supp balise[Résolu][Expression Régulière] Besoin d'aide
Plus de sujets relatifs à : Expression régulière


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