Bonjour à tous,
En tant que débutant, j´essaie de parcourir différents tutoriaux mais j´ai un problème avec l´exercice suivant.
Le but est de créer un programme qui compte les lignes d´un fichier (et rajoute leur numéro en début de ligne), mais seulement celles qui comprennent des doubles lettres (minuscules, comme aa ou bb par exemple). Il faut de plus remplacer ces doubles lettres par elles-mêmes entourées de parenthèses :
Ex :
------
Amp, James Watt, Bob Transformer, etc. These pioneers conducted many
doit donner :
023 Amp, James Wa(tt), Bob Transformer, etc. These pion(ee)rs conducted many
J´arrive à retrouver les doubles lettre avec un :
/([a-z])\1/
dans un if,
mais je ne vois pas comment faire le remplacement, surtout s´il y a plusieurs doubles lettres différentes dans la même ligne.
Voilà ce à quoi j´étais arrivé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 open(INFO,$file); $unites=1; $dizaines=0; $centaines=0; while($ligne=<INFO>) { $_=$ligne; if(/([a-z])\1/) { $pattern=$1; s/($pattern$pattern)/($1\)/g; print $centaines . $dizaines . $unites . " $_"; $unites++; } else { print "$ligne"; } if ($unites==10) { $dizaines++; $unites=0; } if($dizaines==10) { $centaines++; $dizaines=0; } }
Cela ne fonctionne clairement que pour un seul type de double lettre par ligne .
Merci pour le temps que vous passerez à me répondre !!
A bientôt
Partager