Je te propose (c'est sans doute moche mais ça semble fonctionner avec l'exemple que tu as donné) :
C-M-% (([[:digit:]]+.[[:digit:]]+)W([[:digit:]]+.[[:digit:]]+)W([[:digit:]]+.[[:digit:]]+)) RET (1,2,3)
J'utilise les classes de caractères mais tu peux utiliser un simple [0-9] à la place.
C'est plus vite tapé... est-ce que [:digit:] correspond /toujours/ à 0-9 ? (avec UTF-8 je m'attends au pire :).
Si c'est ok sur les premières occurrences tu peux envoyer le reste avec !
Si les nombres sont entre 0 et 1, la partie décimale pourrait être omise, donc
((0(?:.[0-9]+)?|1))[[:space:]]+ ... ) RET (1,2,3)
Le W me semble un peu trop général ? Ta regexp ne convertit pas
(1 0.666 0)
mais transforme
(1.0 (2.0 (3.0))
en
(1.0,2.0,3.0))
M-x re-builder roulaize...
Fainéant :) -- Jacques L'helgoualc'h
Sébastien Kirche
Le 1 décembre 2007 à 17:08, Jacques L'helgoualc'h a dit :
C'est plus vite tapé... est-ce que [:digit:] correspond /toujours/ à 0-9 ? (avec UTF-8 je m'attends au pire :).
Je ne sais pas, je suis toujours en latin1/9/0.
> Si c'est ok sur les premières occurrences tu peux envoyer le reste > avec !
Si les nombres sont entre 0 et 1, la partie décimale pourrait être omise, donc
((0(?:.[0-9]+)?|1))[[:space:]]+ ... ) RET (1,2,3)
Le W me semble un peu trop général ? Ta regexp ne convertit pas
(1 0.666 0)
mais transforme
(1.0 (2.0 (3.0))
en
(1.0,2.0,3.0))
C'est vrai W n'était pas le plus adapté. J'aurais aussi pu utiliser l'espace directement dans la regexp, vu que le cas en question concernait seulement une petite série de remplacement à usage unique. Seul l'OP connaît vraiment le cadre d'utilisation.
J'ai un peu tendance à généraliser le code en pensant que ça pourrait resservir pour une autre utilisation. Je passe beaucoup de temps en ce moment à maintenir / modifier du code absolument pas générique, écrit pour des cas particuliers et pour lequel je rame à étendre le domaine d'utilisation...
> M-x re-builder roulaize...
Fainéant :)
Mouais. Ces dernier jours j'ai mangé pas mal de regexps sed/perl et aussi d'autres utilisées dans du code vba (MS Excel) et bien évidement les syntaxes ne sont pas les mêmes dès qu'on sort des bases. Et pour le cas qui nous intéresse ici, Emacs apporte aussi sont lot de différences. re-builder est alors bien pratique pour retrouver les bonnes syntaxes.
-- Sébastien Kirche
Le 1 décembre 2007 à 17:08, Jacques L'helgoualc'h a dit :
C'est plus vite tapé... est-ce que [:digit:] correspond /toujours/ à
0-9 ? (avec UTF-8 je m'attends au pire :).
Je ne sais pas, je suis toujours en latin1/9/0.
> Si c'est ok sur les premières occurrences tu peux envoyer le reste
> avec !
Si les nombres sont entre 0 et 1, la partie décimale pourrait être
omise, donc
((0(?:.[0-9]+)?|1))[[:space:]]+ ... ) RET (1,2,3)
Le W me semble un peu trop général ? Ta regexp ne convertit pas
(1 0.666 0)
mais transforme
(1.0 (2.0 (3.0))
en
(1.0,2.0,3.0))
C'est vrai W n'était pas le plus adapté. J'aurais aussi pu utiliser
l'espace directement dans la regexp, vu que le cas en question
concernait seulement une petite série de remplacement à usage unique.
Seul l'OP connaît vraiment le cadre d'utilisation.
J'ai un peu tendance à généraliser le code en pensant que ça pourrait
resservir pour une autre utilisation. Je passe beaucoup de temps en ce
moment à maintenir / modifier du code absolument pas générique, écrit
pour des cas particuliers et pour lequel je rame à étendre le domaine
d'utilisation...
> M-x re-builder roulaize...
Fainéant :)
Mouais. Ces dernier jours j'ai mangé pas mal de regexps sed/perl et
aussi d'autres utilisées dans du code vba (MS Excel) et bien évidement
les syntaxes ne sont pas les mêmes dès qu'on sort des bases. Et pour le
cas qui nous intéresse ici, Emacs apporte aussi sont lot de différences.
re-builder est alors bien pratique pour retrouver les bonnes syntaxes.
Le 1 décembre 2007 à 17:08, Jacques L'helgoualc'h a dit :
C'est plus vite tapé... est-ce que [:digit:] correspond /toujours/ à 0-9 ? (avec UTF-8 je m'attends au pire :).
Je ne sais pas, je suis toujours en latin1/9/0.
> Si c'est ok sur les premières occurrences tu peux envoyer le reste > avec !
Si les nombres sont entre 0 et 1, la partie décimale pourrait être omise, donc
((0(?:.[0-9]+)?|1))[[:space:]]+ ... ) RET (1,2,3)
Le W me semble un peu trop général ? Ta regexp ne convertit pas
(1 0.666 0)
mais transforme
(1.0 (2.0 (3.0))
en
(1.0,2.0,3.0))
C'est vrai W n'était pas le plus adapté. J'aurais aussi pu utiliser l'espace directement dans la regexp, vu que le cas en question concernait seulement une petite série de remplacement à usage unique. Seul l'OP connaît vraiment le cadre d'utilisation.
J'ai un peu tendance à généraliser le code en pensant que ça pourrait resservir pour une autre utilisation. Je passe beaucoup de temps en ce moment à maintenir / modifier du code absolument pas générique, écrit pour des cas particuliers et pour lequel je rame à étendre le domaine d'utilisation...
> M-x re-builder roulaize...
Fainéant :)
Mouais. Ces dernier jours j'ai mangé pas mal de regexps sed/perl et aussi d'autres utilisées dans du code vba (MS Excel) et bien évidement les syntaxes ne sont pas les mêmes dès qu'on sort des bases. Et pour le cas qui nous intéresse ici, Emacs apporte aussi sont lot de différences. re-builder est alors bien pratique pour retrouver les bonnes syntaxes.