c:\progs> type entree.txtent
Ligne 1 contenant la chaine aaa
Ligne 2 contenant la chaine bbb
Ligne 3 contenant la chaine aaabbb
Ligne 4 contenant la chaine bbaaabb
Ligne 5 contenant la chaine aaaaaa
Ligne 6 contenant la chaine ababab
Ligne 7 contenant la chaine bbaabb
Ligne 8 contenant la chaine aaaa
Ligne 9 contenant la chaine aa
c:\progs>
| Programme reg1.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree.txt");
while (<>) {
if (/aaa/) {
print "$_";
}
}
|
c:\progs> perl reg1.plent
Ligne 1 contenant la chaine aaa
Ligne 3 contenant la chaine aaabbb
Ligne 4 contenant la chaine bbaaabb
Ligne 5 contenant la chaine aaaaaa
Ligne 8 contenant la chaine aaaa
c:\progs>
|
| @ARGV = ("Entree.txt"); | Déclaration du fichier "entrée.txt en tant que source de l'opérateur diamand. |
| while (<>) { | Accés aux lignes successives du fichier et test de fin de fichier. Aucun scalaire n'étant spécifié en tant de destination, les lignes seront stockées dans la variable scalaire standard $_. |
| if (/aaa/) { | La condition se présente entre deux slash (/) indiquant qu'il s'agit d'une expression régulière. Il n'y a aucune indication à propos du scalaire qui contient la chaîne de caractères sur laquelle doit porter le recherche, ce sera donc par définition la variable scalaire standard $_. Le modèle que l'on recherche est une suite de trois fois le caractère "a". Si ce modèle est trouvé, alors la réponse sera 'vrai', dans le cas contraire, elle sera 'faux'. |
| print "$_"; | Si la réponse est 'vrai', c'est à dire que le modèle recherché est présent dans la chaîne de référence, on imprime la ligne en question. |
| } | Sinon on se contente de passer à la ligne suivante. |
| } | Jusqu'à épuisement des lignes du fichier d'entrée. |
ab*a
| aa | Zéro "b" entre deux "a" |
| aba | Un "b" entre deux "a" |
| abba | Deux "b" entre deux "a" |
| ab....ba | n "b" entre deux "a" |
| Programme reg2.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree");
while (<>) {
if (/ab*b/) {
print "$_";
}
}
|
c:\progs> perl reg2.plent
igne 3 contenant la chaine aaabbb
Ligne 4 contenant la chaine bbaaabb
Ligne 6 contenant la chaine ababab
Ligne 7 contenant la chaine bbaabb
c:\progs>
|
| Programme reg3.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree");
while (<>) {
if (s/ab*b/XXXX/) {
print "$_";
}
}
|
c:\progs> perl reg3.plent
Ligne 3 contenant la chaine aaXXXX
Ligne 4 contenant la chaine bbaaXXXX
Ligne 6 contenant la chaine XXXXabab
Ligne 7 contenant la chaine bbaXXXX
c:\progs>
|
/a.b/
/b[aeiou]b/
/b[^aeiou]b/
| [0-9] | L'ensemble des caractères compris entre 0 et 9. |
| [a-z] | L'ensemble des lettres minuscules. |
| [A-Z] | L'ensemble des lettres majuscules. |
| [0-9] | Les chiffres. |
| [^0-9] | Tout sauf un chiffre. |
| [a_zA-Z0-9_] | L'ensemble des caractères utilisables pour représenter des identificateurs. |
| [^a_zA-Z0-9_] | Tout caractère sauf ceux utilisé pour représenter des identificateurs. |
| Nom de la classe | Signification | Classe équivalente. |
|---|---|---|
| \d | Chiffres | [0-9] |
| \D | Tout sauf un chiffre | [^0-9] |
| \w | Caractères faisant partie de la construction des mots | [a_zA-Z0-9_] |
| \W | Tout sauf les caractères faisant partie de la construction des mots (les séparateurs) | [a_zA-Z0-9_] |
| \s | Les séparateurs? | [\t\n\f\r] |
| \S | Tout sauf un séparateur | [^\t\n\f\r] |
/\W\d*\dA\d\W/
| \W | Un caractère ne faisant pas partie de ceux composant les mots (séparateur ou signe de ponctuation. |
| \d* | Suivi d'un nombre de chiffres compris entre 0 et n. |
| \d | Suivi d'un chiffre. En résumé, au moins un chiffre. |
| A | Suivi du caractère "A" (en majuscule). |
| \d | Suivi d'un chiffre. |
| \W | Et se terminant par un caractère ne faisant pas partie de ceux composant les mots (séparateur ou signe de ponctuation. |
,12A3. -1A1; (123A4)
12A3. -A1; (123AA4)
| Programme reg4.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree");
while (<>) {
if (/xy{2,3}/) {
print "$_";
}
}
|
c:\progs> perl reg4.plent
Ligne 3 contenant la chaine xxxyyy
Ligne 4 contenant la chaine yyxxxyy
Ligne 7 contenant la chaine yyxxyy
c:\progs>
|
| Programme reg5.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree");
while (<>) {
if (/xy{3,}/) {
print "$_";
}
}
|
c:\progs> perl reg5.plent
Ligne 3 contenant la chaine xxxyyy
c:\progs>
|
| Programme reg6.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV = ("Entree");
while (<>) {
if (/xy{0,3}/) {
print "$_";
}
}
|
c:\progs> perl reg6.plent
Ligne 1 contenant la chaine xxx
Ligne 3 contenant la chaine xxxyyy
Ligne 4 contenant la chaine yyxxxyy
Ligne 5 contenant la chaine xxxxxx
Ligne 6 contenant la chaine xyxyxy
Ligne 7 contenant la chaine yyxxyy
Ligne 8 contenant la chaine xxxx
Ligne 9 contenant la chaine xx
c:\progs>
|
c:\progs> type valid.plent #!usr/bin/perl print "Donner un nom de variable : "; chop (); if (/\$[A-Za-z][_0-9A-Za-z]*/){ print ("Le nom $_ représente une variable scalaire.\n"; } elsif (/@[A-Za-z][_0-9A-Za-z]*/){ print ("Le nom $_ représente une liste.\n"; } elsif (/%[A-Za-z][_0-9A-Za-z]*/){ print ("Le nom $_ représente un hash.\n"; } elsif (/[A-Za-z][_0-9A-Za-z]*/){ print ("Le nom $_ représente un fichier.\n"; } else { print ("Le nom $_ ne représente par une variable.\n"); } c:\progs>
| Programme reg7.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/x(.)y\1/) {
print "$_";
}
}
|
c:\progs> perl reg7.plent
Ligne 3 contenant la chaine xxxyyy
c:\progs>
|
/a(.*)b\1/
"axxxbxxx"
| Pour la cible | La réponse sera |
|---|---|
| axxxbxxx/td> | vrai |
| ayybyy | vrai |
| axxxbxx | faux |
| axybxy | vrai |
| ab | vrai |
"AA-aaa-BB-bbb-C-C-ccc-DD"
s/A(.*)B(.*)C/X\1Y\2Z/
"XA-aaa-BY-bbb-C-Z-ccc-DD"
| s/A(.*)B(.*)C/X\1Y\2Z/ | On cherche la lettre "A" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On mémorise alors la chaine qui suit le "A" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | Et ce, jusqu'à l'ocurence du caractère "B". La première mémoire \1 contient "A-aaa-B" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On mémorise alors la chaine qui suit le "B" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | Et ce, jusqu'à l'ocurence du caractère "C". La seconde mémoire \2 contient "-bbb-C-" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On passe alors à la substition. |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On commence par écrire la lettre "X" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | Suivie de la chaîne contenue dans la première mémoire("A-aaa-B"). L'état de la chaîne à ce point est "XA-aaa-B". |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On écrit alors le caractère "Y". La chaîne est devenue "XA-aaa-BY" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | On fait alors suivre la chaîne du contenu de la seconde mémoire, elle devient "XA-aaa-BY-bbb-C-" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | Et on termine l'expression régulière en écrivant un "Z" pour obtenir "XA-aaa-BY-bbb-C-Z" |
| s/A(.*)B(.*)C/X\1Y\2Z/ | Reste la fin de la chaîne (tout ce qui suit le second "C" et qui n'était pas concerné. Elle ne bouge pas et reste donc à sa place."XA-aaa-BY-bbb-C-Z-ccc-DD" |
A(.*)B
"A-aaa-BB"
"A-aaa-B"
"A-aaa-"
"Yxxxxxxxx"
/Y(x*)/
"xxxxxxxx"
| Programme reg8.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/xyy\b/) {
print "$_";
}
}
|
c:\progs> perl reg8.plent
Ligne 4 contenant la chaine yyxxxyy
Ligne 7 contenant la chaine yyxxyy
c:\progs>
|
| Programme reg9.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/\bxxx/) {
print "$_";
}
}
|
c:\progs> perl reg9.plent
Ligne 1 contenant la chaine xxx
Ligne 3 contenant la chaine xxxyyy
Ligne 5 contenant la chaine xxxxxx
Ligne 8 contenant la chaine xxxx
c:\progs>
|
| Programme reg10.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/\bxxx\b/) {
print "$_";
}
}
|
c:\progs> perl reg10.plent
Ligne 1 contenant la chaine xxx
c:\progs>
|
| Programme reg11.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/\bxy\B/) {
print "$_";
}
}
|
c:\progs> perl reg11.plent
Ligne 6 contenant la chaine xyxyxy
c:\progs>
|
| Programme reg12.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
@ARGV=("Entree");
while (<>) {
if (/\Bxy\B/) {
print "$_";
}
}
|
c:\progs> perl reg12.plent
Ligne 3 contenant la chaine xxxyyy
Ligne 4 contenant la chaine yyxxxyy
Ligne 6 contenant la chaine xyxyxy
Ligne 7 contenant la chaine yyxxyy
c:\progs>
|
| Exemple | Commentaire |
|---|---|
| /^a/ | "vrai" si la cible commence par le caractère "a". |
| /\^a/ | "vrai" si la cible contient la chaîne "^a" |
| /a^/ | "vrai" si la cible contient la chaîne "a^". |
| /a$/ | "vrai" si la cible se termine par le caractère "a". |
| /a\$/ | "vrai" si la cible contient la chaîne "a$". |
| /$a/ | "vrai" si la cible contient la chaîne "$a". |
| Priorité | Opérateur | Représentation |
|---|---|---|
| Maximale | Parenthèses | ( ) |
| . | Multiplicateurs | + * ? (m,n) |
| . | Séquences, ancrages | abc ^ $ \b \B |
| Minimale | choix | | |
| Exemple | Commentaire |
|---|---|
| /abc*/ | "a" suivi de "b" suivi de zéro ou plusieurs "c". |
| /(abc)* / | 0 ou n fois la chaîne "abc". |
| /^x|y/ | Un "x" en début de mot suivi de tout caractère, ou un "y" où qu'il soit dans la chaine. |
| /a|bc|d/ | Toute chaine contenant le caractère "a" ou les caractères "bc" ou le caractère "d". |
| /(a|b)(c|d)/ | Toute chaine contenant le caractère "a" ou le caractère "b" suivis du caractère "c" ou du caractère "d" ("ac", "ad", "b"c, "bd"). |
| Programme reg13.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "Bonjour";
print ("Recherche de la chaine Bo.\n");
print ("Resultat : ",$cible =~ /^Bo/);
print "\n";
print ("Recherche de la chaine ja\n");
print ("Resultat : ",$cible =~ /ja/);
|
c:\progs> perl reg13.plent
Recherche de la chaine Bo.
Resultat : 1
Recherche de la chaine ja.
Resultat :
c:\progs>
|
if($cible =~ /expr. régulière/) {
Séquence pour condition vraie;
} else {
Séquence pour condition fausse;
}
| Programme reg14.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
print ("Quelle est votre reponse ? ");
if (
|
c:\progs> perl reg14.plent Quelle est votre reponse ? Ouient La reponse est oui. c:\progs> perl reg14.plent Quelle est votre reponse ? Nonent La reponse est non. c:\progs> |
|
a-cotea-cotes a-coup a-coups a-peu-pres a-pic a-propos a-valoir a-venir abaissa ..... |
..... irreformables irrefrenable irrefrenables irrefutable irrefutables irrefute irrefutee irrefutees .... |
..... zoologiste zoologistes zoom zooms zoos zouave zouaves zozoter zyeuter |
| Programme dico1.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/^shu/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico1.plent
shunter
c:\progs>
|
| Programme dico2.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/ley$/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico2.plent
trolley
volley
c:\progs>
|
| Programme dico3.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/aer..y/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico3.plent
aerodynamique
c:\progs>
|
| Programme dico4.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/[gjp]er..y/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico4.plent
jersey
peroxyder
c:\progs>
|
| Programme dico5.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/^[a-d]hry[a-is]/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico5.plent
chrysalide
chrysantheme
c:\progs>
|
| Programme dico6.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/^k[aeiou][aeiou][aeiou]*/){
print "$ligne\n";
}
}
|
c:\progs> perl dico6.plent
kaolin
kiosque
c:\progs>
|
| Programme dico7.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/^quo[a-z]*t$/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico7.plent
quolibet
quotidiennement
quotient
c:\progs>
|
| Programme dico8.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/^quo.*t$/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico8.plent
quolibet
quote-part
quotidiennement
quotient
c:\progs>
|
| Programme dico9.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/[a-z]*a[a-z]*e[a-z]*i[a-z]*o[a-z]*u/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico9.plent
bacteriologique
c:\progs>
|
| Programme dico10.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("francais.txt");
while ($ligne = <>) {
chop ($ligne);
if ($ligne =~/.*a.*e.*i.*o.*u/) {
print "$ligne\n";
}
}
|
c:\progs> perl dico10.plent
bacteriologique
garde-chiourme
c:\progs>
|
| Programme reg14.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
print ("Quelle est votre reponse ? ");
if (
|
c:\progs> perl reg14.plent Quelle est votre reponse ? Ouient La reponse est oui. c:\progs> perl reg14.plent Quelle est votre reponse ? Nonent La reponse est non. c:\progs> |
| Programme reg14bis.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
print ("Quelle est votre reponse ? ");
if (
|
c:\progs> perl reg14bis.plent Quelle est votre reponse ? Ouilent La reponse est oui. c:\progs> perl reg14bis.pllent Quelle est votre reponse ? Nonlent La reponse est non. c:\progs> |
| Programme reg15.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl; $path = |
c:\progs> perl reg15.plent /etc/passwdent Chaine reconnue c:\progs> |
| Programme reg16.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl; $path = |
c:\progs> perl reg16.plent /etc/passwdent Chaine reconnue c:\progs> |
| Programme reg16bis.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl; $path = |
c:\progs> perl reg16bis.plent /etc/passwdent Chaine reconnue c:\progs> |
| Programme reg17.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$mot = "jour";
$cible = "Bonjour a tous.";
if ($cible =~ /$mot/) {
print ("le nom : $nom\n");
print ("contient la chaine : $mot\n");
} else {
print ("Rien");
}
|
c:\progs> perl reg17.plent
la cible: Bonjour a tous.
contient la chaine : jour
c:\progs>
|
| Programme reg18.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl; $cible = "Bonjour a tous."; print "Quel mot rechercher ?\n"); $mot = |
c:\progs> perl reg18.plent Quel mot rechercher ? bonjourent La cible: Bonjour a tous. ne contient pas : bonjour c:\progs> perl reg18.plent Quel mot rechercher ? [bB]onjourent La cible: Bonjour a tous. contient : [bB]onjour c:\progs> |
"AA-aaa-BB-bbb-C-C-ccc-DD"
s/A(.*)B(.*)C/X\1Y\2Z/
| Programme reg19.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
$cible =~ s/A(.*)B(.*)C/X\1Y\2Z/;
print ("Valeur de $1 : $1\n");
print ("Valeur de $2 : $2\n");
print ("Valeur finale de la cible :\n");
print ($cible"\n");
|
c:\progs> perl reg19.plent
Valeur de $1 : AA-aaa-B
Valeur de $2 : -bbb-C-
Valeur finale de la cible :
XA-aaa-BY-bbb-C-Z-ccc-DD
c:\progs>
|
| Programme reg20.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl; chomp( |
c:\progs> perl eg20.plent
Bonjour Monsieur
Premier mot : Bonjour
Second mot : Monsieur
c:\progs>
|
| Nom | Contenu. |
|---|---|
| $& | Chaine qui couvre le modèle. |
| $` | Partie qui précède le modèle. |
| $' | Partie qui suit le modèle |
| Programme reg21.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
$cible =~ /(b+)/;
print ("Chaine reperee : $&\n");
print ("Chaine qui precede : $`\n");
print ("Chaine qui suit : $'\n");
|
c:\progs> perl reg21.plent
Chaine reperee : bbb
Chaine qui precede : AA-aaa-BB-
Chaine qui suit : -C-C-ccc-DD
c:\progs>
|
| Options | Action |
|---|---|
| g | Pour general. Change toutes les occurences de la forme sélectionnée |
| i | Pour ignore case. Ignore le fait que la forme sélectionnée est en majuscule ou en minuscule. |
| e | Pour evaluate. Permet l'évaluation de la chaine de remplacement comme une expression. |
| m | Pour multiple lines. La chaine de test occupe plusieurs lignes. |
| o | Pour one. L'évaluation n'a lieu qu'une fois. |
| s | Pour single line. Le traitement n'a lieu que sur une ligne. |
| x | Pour extended. Permet de présenter une expression régulière sur plusieurs lignes. |
| Programme reg22.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
print ("Avant : $cible\n");
$cible =~ s/C/xx/;
print ("Apres : $cible\n");
|
c:\progs> perl reg22.plent
Avant : AA-aaa-BB-bbb-C-C-ccc-DD
Apres : AA-aaa-BB-bbb-xx-C-ccc-DD
c:\progs>
|
| Programme reg23.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
print ("Avant : $cible\n");
$cible =~ s/C/xx/g;
print ("Apres : $cible\n");
|
c:\progs> perl reg23.plent
Avant : AA-aaa-BB-bbb-C-C-ccc-DD
Apres : AA-aaa-BB-bbb-xx-xx-ccc-DD
c:\progs>
|
| Programme reg24.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
print ("Avant : $cible\n");
$cible =~ s/C/xx/gi;
print ("Apres : $cible\n");
|
c:\progs> perl reg24.plent
Avant : AA-aaa-BB-bbb-C-C-ccc-DD
Apres : AA-aaa-BB-bbb-xx-xx-xxxxxx-DD
c:\progs>
|
| Programme reg25.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
$cible = "AA-aaa-BB-bbb-C-C-ccc-DD";
print ("Avant : $cible\n");
$cible =~ s/(\w+)(\W+)/<$1>/g;
print "$cible\n";
|
c:\progs> perl reg25.plent
Avant : AA-aaa-BB-bbb-C-C-ccc-DD
Apres : <AA><aaa><BB><bbb><C><C><ccc><DD>
c:\progs>
|
Ce texte contient des tas
d'espaces et de tabulations
mal placees.
le but est de le reformater
afin qu'il soit presentable
| Programme reg26.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
@ARGV =("ttab.txt");
print "Texte reformate : \n\n");
while ($ligne =<>) {
$ligne =~s/^[ \t]+//;
$ligne =~s/[ \t]+$//;
$ligne =~s/[ \t]+/ /g;
chomp($ligne);
print "-$ligne-\n";
|
c:\progs> perl reg26.plent
Texte reformate :
-Ce texte contient des tas-
-d'espaces et de tabulations-
-mal placées.-
-le but est de le reformater-
-afin qu'il soit présentable.-
c:\progs>
|
Ab2x4y6
AbAbxxxxyyyyyy
| Programme reg27.pl | Exécution sur l'écran |
|---|---|
#!usr/bin/perl
$chaine = "Ab2x4y6";
print ("Chaine origine :\n");
print ("$chaine\n"=;
$chaine =~s/([a-zA-Z]+)(\d+)/$1 x $2/ge;
print ("Chaine apres traitement :\n");
print "$chaine\n";
|
c:\progs> perl reg27.plent
Chaine origine :
Ab2x4y6
Chaine apres traitement :
AbAbxxxxyyyyyy
c:\progs>
|
Le nombre entier un : 1. Le nombre entier deux : 2. Le nombre entier quatre : 4. Le nombre entier huit : 8. Et pourquoi pas le nombre entier cent : 100. Cette egalité est vraie : 250 x 3 = 750. Et on finit en donnant la date : nous sommes le 22 Avril 2000.
| Programme reg28.pl | Exécution sur l'écran |
|---|---|
#!/usr/bin/perl;
#!usr/bin/perl
@ARGV =("Txtnb.txt");
while ($ligne = <>) {
$ligne =~s/\d+/$& * 2/eg;
print "$ligne";
}
|
c:\progs> perl reg28.plent
Le nombre entier un : 2.
Le nombre entier deux : 4.
Le nombre entier quatre : 8.
Le nombre entier huit : 16.
Et pourquoi pas le nombre entier cent : 200.
Cette egalité est vraie : 500 x 6 = 1500.
Et on finit en donnant la date :
nous sommes le 44 Avril 4000.
c:\progs>
|
c:\progs> type date.plent #!/usr/bin/perl print ("Donnez moi une date sous la forme aaaa-mm-jj : "); chop ($date=); $M31 = "(0[13578]|1[02]).(0[1-9]|[12]\\d|3[01])"; $M30 = "(0[469]|11).(0[1-9]|[12]\\d|30)"; $Mf = "02.(0[1-9]|[12]\\d)"; $xx = $date =~/^(19)\d\d.($M31|$M30|$Mf)$/; $xxi = $date =~/^(20)?\d\d.($M31|$M30|$Mf)$/; $ancienne = $date =~/^(d{1,4}).($M31|$M30|$Mf)$/; if ($xx) { print ("$date est une date du XXème siècle qui semble valide.\n"); } elsif ($xxi) { print ("$date est une date du XXIème siècle qui semble valide.\n"); } elsif ($ancienne) { print ("$date n'est pas une date du XX eme siècle.\n"); } else { print ("$date ne semble pas etre une date valide.\n"); } c:\progs>
(0[13578]|1[02]).(0[1-9]|[12
| (0[13578]|1[02]).(0[1-9]|[12]\\d|3[01]) | De définir les mois de 31 jours (01, 03, 05, 07, 08, 10, 12). Ou bien un 0 suivi d'un des chiffres 1, 3, 5, 7, 8. Ou bien un 1 suivi d'un des chiffres 0, 2. |
| (0[13578]|1[02]).(0[1-9]|[12]\\d|3[01]) | De sauter un caractère, le séparateur. |
| (0[13578]|1[02]).(0[1-9]|[12]\\d|3[01]) |
De définir tous les nombres de 2 chiffres compris entre 01 et 31. Un 0 suivi d'un des chiffres 1 à 9. Un 1 ou un 2 ([12]) suivi d'un des chiffres 0 à 9. Un 3 suivi d'un des chiffres 0 ou 1. |
(0[469]|11).(0[1-9]|[12]\\d|30)
| (0[469]|11).(0[1-9]|[12]\\d|30) | Définition des mois de 30 jours (04, 04, 04, 11). Un 0 suivi d'un des chiffres 4, 6, 9. Les deux chiffres 11. |
| (0[469]|11.(0[1-9]|[12]\\d|30) | De sauter un caractère, le séparateur. |
| (0[1-9]|[12]\\d|30)(0[1-9]|[12]\\d|30) |
De définir tous les nombres de 2 chiffres compris entre 01 et 3. Un 0 suivi d'un des chiffres 1 à 9. Un 1 ou un 2 ([12]) suivi d'un des chiffres 0 à 9. Les deux chiffres 31. |
02.(0[1-9]|[12]\\d)
| 02.(0[1-9]|[12]\\d) | De définir le mois 02, février. |
| 02.(0[1-9]|[12]\\d) | De sauter le séparateur |
| 02.(0[1-9]|[12]\\d) |
Puis de définir tous les nombres de 2 chiffres compris entre 01 et 29. Un 0 suivi d'un des chiffres 1 à 9. Un 1 ou un 2 ([12]) suivi d'un chiffre. |
$xx = $date =~/^(19)\d\d.($M31|$M30|$Mf)$/;
$xxi = $date =~/^(20)?\d\d.($M31|$M30|$Mf)$/;
$ancienne = $date =~/^(d{1,4}).($M31|$M30|$Mf)$/;