enlever des caractères après un test

Le
pluton
bonjour,

voilà dans un fichier texte, j'ai plusieurs occurrences d'une chaîne
de caractères que je vais simplifier par "toto".
Après "toto", il y a parfois une numérotation entre parenthèses comme
suit:

[texte]
toto(1.34)
[texte]

bien sûr, la numérotation entre parenthèses n'est jamais la même. J=
e
sais donc qu'entre parenthèses, 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é comment tester ce qui arrive juste après "toto"? J'ai vu la
commande "next" mais peut-être y a-t-il une technique particulière
pour ce que je souhaite faire.

merci pour vos commentaires.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
xavier
Le #20600111
pluton
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
pluton
Le #20600991
On 21 nov, 06:57, (Xavier) wrote:
pluton > 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



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
pluton
Le #20601211
à ce propos, comment ajouter l'espace " " dans la liste des caractères
présents après "toto" ?

merci
Denis Dordoigne
Le #20601221
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
pluton
Le #20601201
> 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.
Olivier Miakinen
Le #20603091
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
pluton
Le #20604181
On 21 nov, 14:47, 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. ]



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 ?
espie
Le #20605091
In article pluton
On 21 nov, 14:47, 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. ]



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.
Olivier Miakinen
Le #20605951
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
pluton
Le #20618501
> 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.
Publicité
Poster une réponse
Anonyme