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

enlever des caractères après un test

10 réponses
Avatar
pluton
bonjour,

voil=E0 dans un fichier texte, j'ai plusieurs occurrences d'une cha=EEne
de caract=E8res que je vais simplifier par "toto".
Apr=E8s "toto", il y a parfois une num=E9rotation entre parenth=E8ses comme
suit:

[texte]
toto(1.34)
[texte]

bien s=FBr, la num=E9rotation entre parenth=E8ses n'est jamais la m=EAme. J=
e
sais donc qu'entre parenth=E8ses, il y a des "1", "2", "3", "4", "5",
"6", "7", "8", "9" et un "." Je ne connais pas bien le perl mais en
cherchant sur internet, je sais trouver les "toto" par contre, je n'ai
pas trouv=E9 comment tester ce qui arrive juste apr=E8s "toto"? J'ai vu la
commande "next" mais peut-=EAtre y a-t-il une technique particuli=E8re
pour ce que je souhaite faire.

merci pour vos commentaires.

10 réponses

Avatar
xavier
pluton wrote:

comment tester ce qui arrive juste après "toto"?



$str =~ /toto([0-9.]+)/;

Si tu veux récupérer la valeur entre parenthèses :

$str =~ /toto(([0-9.]+))/; # la valeur se trouve dans $1

--
XAv
Disponible au 01/06/2010
<http://www.xavierhumbert.net/perso/CV2.html>
Avatar
pluton
On 21 nov, 06:57, (Xavier) wrote:
pluton wrote:
> comment tester ce qui arrive juste après "toto"?

$str =~ /toto([0-9.]+)/;

Si tu veux récupérer la valeur entre parenthèses :

$str =~ /toto(([0-9.]+))/;  # la valeur se trouve dans $1

--
XAv
Disponible au 01/06/2010
<http://www.xavierhumbert.net/perso/CV2.html>



d'accord, merci, voilà ma routine finale :

open(IN,'File.txt') || die "Impossible d'ouvrir $file: $!";
open (FSOR, '> File2.txt');

$i=0;

while ($ligne=<IN>) {

if ($ligne !~ /toto([0-9.]+)/){

print FSOR "$ligne";
}

else {

print FSOR "toton";

}
}


sachant que file.txt contient

ifogijre gofij ofi joif joifj foijroif j
f fi joijf oejf oierjf oiejf
toto(1.33)
toto(1.28)
toto(3.79)
jri jr oijoir jr joerj orezj orjezor jzoej
zeri jzoire jzoierj oizejr


et le fichier file2.txt

ifogijre gofij ofi joif joifj foijroif j
f fi joijf oejf oierjf oiejf
toto
toto
toto
jri jr oijoir jr joerj orezj orjezor jzoej
zeri jzoire jzoierj oizejr
Avatar
pluton
à ce propos, comment ajouter l'espace " " dans la liste des caractères
présents après "toto" ?

merci
Avatar
Denis Dordoigne
Bonjour,

while ($ligne=<IN>) {

if ($ligne !~ /toto([0-9.]+)/){

print FSOR "$ligne";
}

else {

print FSOR "toton";


Je ne vois pas vraiment le rapport avec votre demande initiale (vous ne
récupérez finalement pas ce qui est entre parenthèses), mais si ça répond à
votre besoin on ne va pas chercher plus loin :)


--
Denis Dordoigne
Membre de l'April - promouvoir et défendre le logiciel libre - april.org
Rejoignez maintenant plus de 5000 personnes, associations, entreprises et
collectivités qui soutiennent notre action
Avatar
pluton
> Je ne vois pas vraiment le rapport avec votre demande initiale (vous ne
récupérez finalement pas ce qui est entre parenthèses), mais si ç a répond à
votre besoin on ne va pas chercher plus loin :)



c'est vrai que ça n'était pas très bien formulé. Je voulais tester ce
qui arrivait après toto
pour l'enlever si c'était une numérotation entre parenthèse.
Avatar
Olivier Miakinen
Le 21/11/2009 15:49, pluton a écrit :
à ce propos, comment ajouter l'espace " " dans la liste des caractères
présents après "toto" ?



Remplacer [0-9.] par [0-9. ]

merci



De rien.

--
Olivier Miakinen
Avatar
pluton
On 21 nov, 14:47, Olivier Miakinen <om+ wrote:
Le 21/11/2009 15:49, pluton a écrit :

> à ce propos, comment ajouter l'espace " " dans la liste des caractè res
> présents après "toto" ?

Remplacer [0-9.] par [0-9. ]



ah ? j'ai essayé et ah oui mais non, ça n'est pas exactement la même
situation.
J'ai vu que "espace" pouvait être traduit par s en perl, donc c'est
ce que j'ai utilisé.
Votre méthode fonctionne pour n'importe que nombre d'espaces ?
Avatar
espie
In article ,
pluton wrote:
On 21 nov, 14:47, Olivier Miakinen <om+ wrote:
Le 21/11/2009 15:49, pluton a écrit :

> à ce propos, comment ajouter l'espace " " dans la liste des caractères
> présents après "toto" ?

Remplacer [0-9.] par [0-9. ]



ah ? j'ai essayé et ah oui mais non, ça n'est pas exactement la même
situation.
J'ai vu que "espace" pouvait être traduit par s en perl, donc c'est
ce que j'ai utilisé.



Non, s ca n'est pas forcement un caractere espace, ca peut etre un espace,
une tabulation, encore autre chose qui te donne du blanc a l'ecran.

Pour bien comprendre ce que tu veux faire, faudra que tu regardes un peu
ton fichier a la loupe. Une construction telle que s ne correspondra qu'a
un seul caractere. Si tu veux "un ou plus", c'est s+ qu'il te faut.
Avatar
Olivier Miakinen
Le 22/11/2009 02:39, pluton a écrit :

> à ce propos, comment ajouter l'espace " " dans la liste des caractères
> présents après "toto" ?

Remplacer [0-9.] par [0-9. ]



ah ? j'ai essayé et ah oui mais non, ça n'est pas exactement la même
situation.
J'ai vu que "espace" pouvait être traduit par s en perl, donc c'est
ce que j'ai utilisé.



Problablement ton espace n'était pas une simple espace, mais peut-être
une tabulation ou un autre caractère blanc.

Votre méthode fonctionne pour n'importe que nombre d'espaces ?



Oui, exactement comme pour les chiffres, grâce au « + » qui suit le
crochet fermant.

--
Olivier Miakinen
Avatar
pluton
> Oui, exactement comme pour les chiffres, grâce au « + » qui suit le
crochet fermant.



d'accord merci, bon, j'ai utilisé s+, comme expliqué par Marc et ça
fonctionne,
donc pour l'instant je m'en contente.