GNT sans publicité, site mobile, fonctionnalitées exclusives...

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.
Lire les 10 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
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.
Publicité
Suivre les réponses
Poster une réponse
Anonyme