Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

remplacer une partie du motif recherche

6 réponses
Avatar
Julien Sobrier
Bonjour
J'ai un texte de plusieurs lignes. Une des ligne contient:
to: du_texte_ici
J'aimerais replacer _du_texte_ici par un autre texte. Quelque chose du
style $ligne=~s/to: (.*)/autre_texte/i;
Mais je veux uniquemen remplacer le (.*), je veux garder le to.
Dans ce cas, c'est simple, je pourrais remplcaer autre_texte par to:
autre_texte, mais comment faire dans les cas plus compliques?

Merci
Julien

6 réponses

Avatar
Rue des Prairies
Julien Sobrier wrote:
Bonjour
J'ai un texte de plusieurs lignes. Une des ligne contient:
to: du_texte_ici
J'aimerais replacer _du_texte_ici par un autre texte. Quelque chose du
style $ligne=~s/to: (.*)/autre_texte/i;
Mais je veux uniquemen remplacer le (.*), je veux garder le to.
Dans ce cas, c'est simple, je pourrais remplcaer autre_texte par to:
autre_texte, mais comment faire dans les cas plus compliques?

Merci
Julien

Bonjour,


$ligne =~ s/to: .*/to: autre_texte/i;
ou
$ligne =~ s/(ti; ).*/$1autre_texte/i;

Que veux-tu dire par "cas plus compliqués" ?

Olivier.

Avatar
tyoup
Julien Sobrier wrote:
Bonjour
J'ai un texte de plusieurs lignes. Une des ligne contient:
to: du_texte_ici
J'aimerais replacer _du_texte_ici par un autre texte. Quelque chose du
style $ligne=~s/to: (.*)/autre_texte/i;
Mais je veux uniquemen remplacer le (.*), je veux garder le to.
Dans ce cas, c'est simple, je pourrais remplcaer autre_texte par to:
autre_texte, mais comment faire dans les cas plus compliques?


$ligne =~ s/(?<=to:)(.*)/autre_texte/i ; # par exemple

--
Tyoup

Avatar
Stephane Chazelas
2003/11/13, 12:29(+01), tyoup:
[...]
$ligne =~ s/(?<=to:)(.*)/autre_texte/i ; # par exemple


Attention toutefois avec ce genre de syntaxe quand le flag 'g'
est utilisé:

s/(?<=to:).../ZZZ/g n'est pas équivalent à s/(to:).../$1ZZZ/g

$ echo 'to:aaa to:bbb' | perl -pe 's/(to:).../$1ZZZ/g'
to:ZZZ to:ZZZ
$ echo 'to:aaa to:bbb' | perl -pe 's/(?<=to:).../ZZZ/g'
to:ZZZ to:ZZZ

OK, mais:

$ echo 'to:to: to:bbb' | perl -pe 's/(to:).../$1ZZZ/g'
to:ZZZ to:ZZZ
$ echo 'to:to: to:bbb' | perl -pe 's/(?<=to:).../ZZZ/g'
to:ZZZZZZ:ZZZ

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
dcd
mais :
s/(.*:)(.*)/$1 Autre texte/g;
ça marche aussi, non ?




Stephane Chazelas wrote in message news:...
2003/11/13, 12:29(+01), tyoup:
[...]
$ligne =~ s/(?<=to:)(.*)/autre_texte/i ; # par exemple


Attention toutefois avec ce genre de syntaxe quand le flag 'g'
est utilisé:

s/(?<=to:).../ZZZ/g n'est pas équivalent à s/(to:).../$1ZZZ/g

$ echo 'to:aaa to:bbb' | perl -pe 's/(to:).../$1ZZZ/g'
to:ZZZ to:ZZZ
$ echo 'to:aaa to:bbb' | perl -pe 's/(?<=to:).../ZZZ/g'
to:ZZZ to:ZZZ

OK, mais:

$ echo 'to:to: to:bbb' | perl -pe 's/(to:).../$1ZZZ/g'
to:ZZZ to:ZZZ
$ echo 'to:to: to:bbb' | perl -pe 's/(?<=to:).../ZZZ/g'
to:ZZZZZZ:ZZZ



Avatar
tyoup
aarg wrote:
mais :
s/(.*:)(.*)/$1 Autre texte/g;
ça marche aussi, non ?


mouais mais attention ne faut pas qu'il y ait ':' dans ce qui suit 'to:' ...

sinon s/(.*?:)(.*)/$1autre_texte/g;

--
Tyoup

Avatar
Julien Sobrier
Rue des Prairies wrote:
Julien Sobrier wrote:

Bonjour
J'ai un texte de plusieurs lignes. Une des ligne contient:
to: du_texte_ici
J'aimerais replacer _du_texte_ici par un autre texte. Quelque chose du
style $ligne=~s/to: (.*)/autre_texte/i;
Mais je veux uniquemen remplacer le (.*), je veux garder le to.
Dans ce cas, c'est simple, je pourrais remplcaer autre_texte par to:
autre_texte, mais comment faire dans les cas plus compliques?

Merci
Julien

Bonjour,


$ligne =~ s/to: .*/to: autre_texte/i;
ou
$ligne =~ s/(ti; ).*/$1autre_texte/i;

Que veux-tu dire par "cas plus compliqués" ?

Olivier.

Merci a tous. C'est le deuxieme exemple que je charchais. Tout simple,

mais je n'y avais pas pense.

Julien