Expression régulière - Divers - Programmation
Marsh Posté le 09-09-2010 à 11:16:06
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 !
Marsh Posté le 09-09-2010 à 11:21:03
echo "9018016;121.81;243.62;00002114" | sed -e 's/^\([^;]*\)\(;.*\)$/("\1"\2)/' -e 's/;/,/'
Marsh Posté le 09-09-2010 à 12:01:16
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
Marsh Posté le 09-09-2010 à 12:11:32
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;
Marsh Posté le 09-09-2010 à 12:20:10
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.
Marsh Posté le 09-09-2010 à 13:39:14
Si tu veux un peu mieux comprendre va dans la partie 7 de cette page http://astuces.jeanviet.info/burea [...] egex.htm#7
Marsh Posté le 09-09-2010 à 16:33:49
ah merci.. C'est déjà plus clair.
je comprenais pas les \1 \2 ...
Marsh Posté le 09-09-2010 à 09:52:44
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