Subtition [PERL] - Perl - Programmation
Marsh Posté le 22-11-2012 à 21:29:30
Bonjour,
Insérer a la place de la ligne
# --->>> C'est ici mon problème.
ceci
s/x(?=xx)/-/g;
s/xx/--/g;
et ça devrait rouler.
Note: dans le code, on peut aussi remplacer if (m/x{2,}/) par if (m/xx/)
J'ai fait un test bête:
axxxxbcxxxdxxex -> a----bc---d--ex
A+,
Marsh Posté le 23-11-2012 à 10:04:25
Bonjour Gilou
Merci pour ta réponse. Excellente comme toujours.
Tu mérites que je te paye un coup un de ces quatre.
Je n'arrive pas à trouver l'explication de (?=xx). A quoi correspond ce "?" ?
A bientôt.
Marsh Posté le 23-11-2012 à 12:15:20
/x(?=xx)/ en fait, ça cherche un x suivi de deux x a droite, mais ça n'inclus pas le xx à droite dans la zone considérée comme traitée par le pattern matching.
Avec s/x(xx)/-/; axxxxb -> a-xb
Avec s/x(?=xx)/-/; axxxxb -> a-xxxb
Ensuite le /g applique la transformation récursivement (en recommençant donc juste après le x transformé en - à chaque fois) ce qui a pour effet de collapser un xx....xxxx en --....--xx
s/x(?=xx)/-/g; axxxxb -> a--xxb
et le s/xx/--/g final traite les xx finaux restant.
A+,
Marsh Posté le 22-11-2012 à 12:14:38
Bonjour amis développeurs
Encore un chalenge !
Voila j'ai un fichier texte qui contient des séries de "x"
j'utilise une fonction qui me permet de lire le fichier et qui doit remplacer cette série de "x" par des "_" (underscore)
Donc je lis le fichier, je test quelle ligne contient plus de 2 "x" de suite, maintenant j'essaye de remplacer ce pattern par un nombre égale de "_".
C'est ici que je bloque. je n'arrive pas à remplacer "x" par autant de "_".
Voici la fonction qui lit et qui test chaque ligne qui contient plus de 2 "x".
sub read_file ($) {
# This sub is used to read the file a store in an array
my $src_name=$_[0];
open(INFILE,"<",$src_name) or
die("Unable to open input file $src_name" );
while ( <INFILE> ) {
if (m/x{2,}/) {
# --->>> C'est ici mon problème.
print $_ ;
}
}
}
Merci pour vos réponses.
Cordialement
Damien