OVH Cloud OVH Cloud

[HS?] vim et regexp

5 réponses
Avatar
no mail
Bonsoir,

J'ai un petit problème avec vim et je ne trouve pas de groupe, comme ce
problème est lié aux regexp je tente ma chance :

Soit 2 lignes de mon fichier :
XX
YY

je veux les remplacer par :
XX += right.XX
YY += right.YY

Avec vim je tape donc :
%s/\(.*\)\([a-z]*\)/\1\2 = rigth.\2/g

et à ma grande suprise j'obtiens :
XX += right.
YY += right.

Ou est mon erreur ?

5 réponses

Avatar
Nicolas George
"no mail" wrote in message
<43c2d50b$0$26399$:
Ou est mon erreur ?


Le « .* » bouffe aussi « XX » ou « YY », et le « [a-z]* » se retrouve avec
la chaîne vide.

Avatar
Jean-Louis Liagre
no mail wrote:
Bonsoir,

J'ai un petit problème avec vim et je ne trouve pas de groupe, comme ce
problème est lié aux regexp je tente ma chance :

Soit 2 lignes de mon fichier :
XX
YY

je veux les remplacer par :
XX += right.XX
YY += right.YY

Avec vim je tape donc :
%s/(.*)([a-z]*)/12 = rigth.2/g

et à ma grande suprise j'obtiens :
XX += right.
YY += right.

Ou est mon erreur ?


2 à la fin est vide (il n'y a pas de minuscules dans la source),
c'est 1 qui correspond aux XX et YY.

Avatar
Stephane Chazelas
On Mon, 09 Jan 2006 22:26:45 +0100, no mail wrote:
[...]
J'ai un petit problème avec vim et je ne trouve pas de groupe, comme ce
problème est lié aux regexp je tente ma chance :

Soit 2 lignes de mon fichier :
XX
YY

je veux les remplacer par :
XX += right.XX
YY += right.YY
[...]


:%s/a+/& += right.&/

--
Stephane

Avatar
Dam
Si tu as besoin de conserver ce qui y a avant :
remplacement de
toto XX
tata YY
par
toto XX += right.XX
tata YY+= right.YY

Tu peux utilisé ça :

:%s/(w+)s*$/1 += right.1/
Avatar
no mail
Merci à tous.