IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

expressions régulières pour corriger la typographie d'un texte


Sujet :

Langage Perl

  1. #81
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    merci merci !
    je me replonge dedans...

  2. #82
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    J'ai fait le ménage (pas que dans le pgm )

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    #======================================================================
    #  AUTEUR: Muriel Lesuisse
    #    DATE: 29/08/2016
    #  SCRIPT: typographie2.pl
    #======================================================================
     
    use strict;            # Pour que Perl m'avertisse si j'oublie de déclarer une variable
    use warnings;          # Pour que Perl me signale les petites erreurs non bloquantes, en plus des GROSSES
    use utf8;              # Pour que les modifications effectuées dans les variables du pgm le soient en utf8
     
    # Pour avoir les accents dans l'invite de commande (Console/Terminal)
    ActiverAccents();
     
     
    #######################
    # Programme principal #
    #######################
     
    # l'argument prend en compte un fichier texte
    my $entree = $ARGV[0];
    my $sortie = $entree."new";
     
    my ($fh_entree, $fh_sortie ) = ();                                     # initialisation de variables à RIEN
     
    # j'ouvre le fichier en lecture pour lire ligne par ligne              # en convertissant en utf8
    open ( $fh_entree, '<:utf8', $entree )
       or die ( "Imposible d'ouvrir le fichier $entree $!" );
     
    # j'ouvre le fichier en écriture pour écrire le nouveau texte corrigé  # en convertissant en utf8
    open ( $fh_sortie, '>:utf8', $sortie )
       or die ( "Imposible d'ouvrir le fichier $sortie $!" );
     
     
    # Initialisation du tableau contenant les locutions latines
    my @loc_lat = ( "ad hoc", "ad libitum", "a foritori", "a posteriori", "a priori", "bis",
                    "grosso modo", "ididem", "idem in extenso", "in extremis", "in fine",
                    "infra", "loc. cit.", "modus vivendi", "op. cit.", "passim", "quater",
                    "sic", "statu quo", "supra", "ter", "via", "vice versa");
     
     
    ###############################
    # Boucle du programme principal
    # tant qu'il y a des lignes dans le fichier en entrée, je lis le texte
     
    while ( my $ligne = <$fh_entree> ) {
                    # s/ = susbstitution: on substitue la partie gauche par la partie droite
                    # s/ ne fonctionne qu'une fois, pour que ça fonctionne plusieurs fois : /g
     
        next if $ligne =~ /^\s+$/g;      # sauter la ligne si elle ne contient que des espaces
        $ligne =~ s/ +$//g;              # supprimer l'espace en fin de ligne
        $ligne =~ s/^ +//g;              # supprimer l'espace en début de ligne
        $ligne =~ s/\( +/\(/g;           # supprimer les espaces après la parenthèse ouvrante
        $ligne =~ s/ +\)/\)/g;           # supprimer les espaces avant la parenthèse fermante
        $ligne =~ s/\[ +/\[/g;           # supprimer les espaces après le crochet ouvrant
        $ligne =~ s/ +\]/\]/g;           # supprimer les espaces avant le crochet fermant
        $ligne =~ s/ +/ /g;              # supprimer plusieurs espaces consécutifs
        $ligne =~ s/ +\././g;            # supprimer les espaces avant le point
        $ligne =~ s/ +\,/,/g;            # supprimer les espaces avant la virgule
        $ligne =~ s/ ;/\x{A0};/g;        # transformer l'espace justifiante en espace insécable 
                                         # avant un point-virgule
        $ligne =~ s/ \?/\x{A0}\?/g;      # transformer l'espace justifiante en espace insécable 
                                         # avant un point d'interrogation
        $ligne =~ s/ !/\x{A0}!/g;        # transformer l'espace justifiante en espace insécable 
                                         # avant un point d'exclamation
        $ligne =~ s/ :/\x{A0}:/g;        # transformer l'espace justifiante en espace insécable 
                                         # avant deux points
        $ligne =~ s/("[^+]")/«[^+]»/g;   # transformer les guillemets
        $ligne =~ s/(')/’/g;             # transformer l'apostrophe
        $ligne =~ s/\. - \./\. — \./g;   # transformer le tiret en tiret cadratin
        $ligne =~ s/\.([^ ])/. $1/g;     # mettre une espace après le point s'il n'est pas déjà
                                         # suivi par un espace
                                         # pour éviter qu'une ligne soit "mangée", il faut mémoriser 
                                         # la lettre qu'on mange et la recopier ensuite
        $ligne =~ s/\,[^ ]/\, /g;        # mettre une espace après la virgule si elle n'est pas 
                                         # déjà suivie par un espace
        $ligne =~ s/;[^ ]/; /g;          # mettre une espace après le point-virgule s'il n'est 
                                         # pas déjà suivi par un espace
        $ligne =~ s/\?[^ ]/\? /g;        # mettre une espace après le point d'interrogation s'il 
                                         # n'est pas déjà suivi par un espace
        $ligne =~ s/![^ ]/! /g;          # mettre une espace après le point d'exclamation s'il 
                                         # n'est pas déjà suivi par un espace
        $ligne =~ s/:[^ ]/: /g;          # mettre une espace après les deux points s'il ne sont 
                                         # pas déjà suivis par un espace
        $ligne =~ s/[^ ];/ ;/g;          # mettre une espace avant le point-virgule s'il n'est 
                                         # pas déjà précédé par un espace
        $ligne =~ s/[^ ]\?/ \?/g;        # mettre une espace avant le point d'interrogation s'il 
                                         # n'est pas déjà précédé par un espace
        $ligne =~ s/[^ ]!/ !/g;          # mettre une espace avant le point d'exclamation s'il 
                                         # n'est pas déjà précédé par un espace
        $ligne =~ s/[^ ]:/ :/g;          # mettre une espace avant les deux points s'il ne sont 
                                         # pas déjà précédés par un espace
        $ligne =~ s/^A\$/^À\$/g;         # remplacer le A par un À avec accent
     
     
        # indiquer à l'auteur qu'il faut une majuscule :             # Compte tenu des modifs précédentes
        my $Pattern = '[.?!] ([a-zàéèùâêîôûç])';                     # regex dans une variable
                                                                     # recherche une minuscule après .?!
        $Pattern =~ s/ /\\ /go;                                      # protège l'espace dans la regex
        my @Array = ($ligne =~ m/(\b.{0,10}$Pattern.{0,10}\b)/gx);   # place dans un tableau le résultat
                                                                     # de la recherche
        if (@Array) {                                                # SI tableau non vide
        	print $fh_sortie "\nContrôler dans la phrase suivante :";  # écrit un libellé pour l'auteur
        	foreach my $Minuscule (@Array) {                           # pour chaque case dans le tableau
        		print $fh_sortie "\n$Minuscule ==> MAJUSCULE ?";         # pose la question à l'auteur
        	}
        	print $fh_sortie "\n\n";                                   # On saute 1 ligne pour aérer 
        }
     
        print $fh_sortie "\n\n";                                     # On saute 2 lignes pour aérer
                                                                     # avant traiter une autre ligne
     
        $ligne = latin ($ligne);                                     # On regarde s'il y a des locutions
                                                                     # latines à traiter
        $ligne = lineNumber ($ligne);                                # On regarde s'il y a des nombres
                                                                     # à traiter
     
        print $fh_sortie $ligne;                                     # On écrit la ligne avec toutes ses
                                                                     # modifs dans le fichier en sortie
    } # FIN de la boucle principale
     
    print $fh_sortie "\n";
     
    # je ferme les fichiers lecture et écriture
    close $fh_entree;
    close $fh_sortie;
     
     
    #######
    # FIN #
    #######
     
    ##################################################
    # Fonctions appelées dans le programme principal #
    ##################################################
     
    ########################################################
    # fonction pour mettre des locutions latines en italique
    sub latin {
    	  my ( $newLine ) = @_;                                   # $newLine reçoit $ligne du pgm principal
        foreach my $elem ( @loc_lat ) {                         # Tant qu'il y a des éléments dans mon tableau
        	  my $newElem = "<i>". $elem ."</i>";                 # j'y concaténe les balises italiques dans $newElem
            $newLine =~ s/$elem/$newElem/g;                     # je remplace tous les $elem par des $newElem
        }                                                       # dans $newLine
        return ($newLine);                                      # je retourne la nouvelle ligne au pgm principal
    }   
     
    #####################################################
    # fonction pour rechercher les nombres dans une ligne
    # qui appelle, si nécessaire, la fonction qui espace les nombres
    sub lineNumber {
    	  my ( $newLine ) = @_;                                   # $newLine reçoit $ligne du pgm principal
    	  my $Pattern = ' [0-9]{1,} ';														# regex qui sélectionne dans la ligne un nombre
    	                                                          # entouré d'espaces
        $Pattern =~ s/ //g;                                     # je supprime les espaces autour du nombre
        my @Array = ($newLine =~ m/$Pattern/g);                 # Dans un tableau je range tous les nombres
                                                                # trouvés dans la ligne
        if (@Array) {                                           # SI il y a des nombres dans le tableau
        	foreach my $number (@Array) {                         # pour chacun d'eux
        		my $newNumber = nombres ($number);                  # j'appelle la fonction qui ajoute des espaces
        		$newLine =~ s/$number/$newNumber/g;                 # Dans la ligne je remplace les nombres chiffres
        	}                                                     # accolés, par les nombres chiffres espacés
        }
        return ($newLine);                                      # je retourne la nouvelle ligne au pgm principal
    }
     
     
    #########################################
    # fonction pour espacer un nombre 3 par 3
    sub nombres {  
        my ( $num )       = @_;                                 # $num reçoit mon nombre à modifier
        my @tab           = split //, $num;                     # je splite mon numéro dans un tableau
        my @tab_invers    = reverse @tab;                       # j'inverse mon tableau
        my $compteur      = 0;                                  # mon compteur est égal à 0
        my $nouveau_num   = "";                                 # je crée une chaine de caractère vide dans laquelle je vais mettre mes chiffres
        my $nouveau_num_endroit;
        for my $chiffre (@tab_invers) {                         # tant qu'il y a des chiffres dans mon tableau inversé
            $compteur++;                                        # j'incrémente mon compteur
            $nouveau_num .= $chiffre;                           # je concatène chaque chiffre à ma chaine de caractère vide
            $nouveau_num .= "\x{A0}" if $compteur % 3 == 0;     # je concatène une espace insécable tous les 3 chiffres
            $nouveau_num_endroit = reverse $nouveau_num;        # je remets mon numéro à l'endroit
        }
        return ($nouveau_num_endroit);                          # je retourne mon nombre à la fonction appelante
    }
     
     
    #==============================================================
    # Pour avoir les accents sur la console DOS
    # http://perl.developpez.com/faq/perl/?page=Terminal#AccentsDOS
    #==============================================================
    sub ActiverAccents {
    	my $encodage;
    	# Windows
      	if ( lc($^O ) eq 'mswin32') {                           # Si je suis sur Windows
    		eval {
    			my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );          # On récupère le nombre que renvoie chcp dans une invite de commande
    			                                                      # exemple : Page de codes active*: 437
    			$encodage = "cp$codepage";                            # On accole ce nombre au libellé "cp" de façon avoir cp437
    			foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {      # pour les fichiers spéciaux sortie_Ecran, Sortie_Erreur, Clavier_Entrée
    				binmode $h, ":encoding($encodage)";                 # djibril modifie l'encodage ;)
    			}
    		};	
    	}
    	else {                                                    # SINON je suis dans Unix / Linux
    		$encodage = `locale charmap`;                           # On récupère l'encodage par défaut, mais avec la commande qui va bien
    		eval {
    			foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {      # djibril modifie l'encodage des fichiers spéciaux ;)
    				binmode $h, ":encoding($encodage)";
    			}
    		};	
    	}
      return $encodage;                                         # Retourne le bon encodage suivant l'OS
    }
     
    #Sinon petit rappel pour info :
    #ü 	\x81 	à 	\x85 	è 	\x8A
    #é 	\x82 	ç 	\x87 	ï 	\x8B
    #â 	\x83 	ê 	\x88 	î 	\x8C
    #ä 	\x84 	ë 	\x89
    Tu as suffisamment d'exemples pour faire d'autres modifications PAR TOI-MÊME...
    SINON le jour de l'examen
    BONNE CONTINUATION !

  3. #83
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    Tes exemples m'ont inspirée.
    Je vais pouvoir me débrouiller
    Un grand merci de m'avoir consacré du temps...

  4. #84
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut Ménage
    De rien
    Je supprime les sorties de fichier inutiles dans les posts précédents et j'en profite pour te faire remarquer dans :
    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
    #####################################################
    # fonction pour rechercher les nombres dans une ligne
    # qui appelle, si nécessaire, la fonction qui espace les nombres
    sub lineNumber {
    	  my ( $newLine ) = @_;                                   # $newLine reçoit $ligne du pgm principal
    	  my $Pattern = ' [0-9]{1,} ';														# regex qui sélectionne dans la ligne un nombre
    	                                                          # entouré d'espaces
        $Pattern =~ s/ //g;                                     # je supprime les espaces autour du nombre
        my @Array = ($newLine =~ m/$Pattern/g);                 # Dans un tableau je range tous les nombres
                                                                # trouvés dans la ligne
        if (@Array) {                                           # SI il y a des nombres dans le tableau
        	foreach my $number (@Array) {                         # pour chacun d'eux
        		my $newNumber = nombres ($number);                  # j'appelle la fonction qui ajoute des espaces
        		$newLine =~ s/$number/$newNumber/g;                 # Dans la ligne je remplace les nombres chiffres
        	}                                                     # accolés, par les nombres chiffres espacés
        }
        return ($newLine);                                      # je retourne la nouvelle ligne au pgm principal
    }
    Initialement la regex sélectionne le nombres entourés d'espaces.
    Car dans le cas d'une référence de matériel par exemple WDM12345
    On se retrouverait avec WDM12 345 ce qui n'est pas tip top pour une référence !

    Mais pour se souvenir que dans le cas du traitement d'une regex dans une variable il faut prêter attention aux espaces à l'intérieur j'ai conservé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $Pattern = ' [0-9]{1,} ';														# regex qui sélectionne dans la ligne un nombre
    	                                                          # entouré d'espaces
        $Pattern =~ s/ //g;                                     # je supprime les espaces autour du nombre
    Sauf que je ne traite pas les espaces à l'intérieur de la variable mais supprime ceux qui l'entoure...
    Donc ATTENTION on est dans la cas de la référence pas tip top...

    Bonne continuation

    [Edit 06:01] Ménage
    Impossible de faire le ménage ou corriger les fautes dans les posts de plus de 3 jours

  5. #85
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    Ce code m'a aidée pour pas mal de choses. C'est super !
    Il me reste un petit soucis :
    je ne peux pas utiliser la fonction pour le nombre,
    Je dois suivre les instructions du prof, ce qui me donne ceci :
    # espacer un nombre 3 par 3
    my $num = "12345678"; # mon numéro = 12345678
    my @tab = split( // ,$num); # je splite mon numéro dans un tableau
    my @tab_invers = reverse @tab; # j'inverse mon tableau
    my $compteur = 0; # mon compteur est égal à 0
    my $nouveau_num = ""; # je crée une chaine de caractère vide dans laquelle je vais mettre mes chiffres
    my $nouveau_num_endroit;
    for my $chiffre (@tab_invers) { # tant qu'il y a des chiffres dans mon tableau inversé
    $compteur++; # j'incrémente mon compteur
    $nouveau_num .= $chiffre; # je concatène chaque chiffre à ma chaine de caractère vide
    $nouveau_num .= "\x{A0}" if $compteur % 3 == 0; # je concatène une espace insécable tous les 3 chiffres

    }
    my @nouv_tab = split( // ,$nouveau_num);
    my @tab_endroit = reverse @nouv_tab;
    $nouveau_num_endroit = join(" " ,@tab_endroit); # je remets mon numéro à l'endroit

    print $nouveau_num_endroit, "\n";

    Ca fonctionne dans l'invite de commande mais pas dans mon fichier de sortie.
    Une idée ?
    Merci

  6. #86
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    c'est quoi au juste ton problème? S'il s'agit d'imprimer dans un fichier de sortie, tu dois ajouter le filehandle dans la ligne d'impression. Par exemple, si le handle de sortie s'appelle $OUT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $OUT $nouveau_num_endroit, "\n";
    Sinon, tu veux peut-être utiliser la variable $nouveau_num_endroit dans ton code. Mais comme tu ne donnes pas le contexte (le code autour de celui que tu cites), je ne peux pas d'aider beaucoup plus pour l'instant.

  7. #87
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    oui c'est ce que je pensais mais j'ai le message d'erreur suivant :
    (v. pièce jointe)
    je ne comprend pas ce que ça veut dire...
    Fichiers attachés Fichiers attachés

  8. #88
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    Voilà mon code complet.
    à la place de $num = 12345678
    j'ai voulu mettre une expression régulière : $num =~ /^\d+$/;
    mais là aussi, j'ai un message d'erreur :/
    Fichiers attachés Fichiers attachés

  9. #89
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Si tu veux remplacer dans ta ligne le nombre par un nombre avec des espaces, tu peux essayer ceci:
    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
     
    while ( my $ligne = <$donnees> ) {
     
    # si la ligne contient un nombre de plus de 4 chiffres, espacer les chiffres 3 par 3
        if ($ligne =~ /(\d{4}\d+)/) {                                 # la ligne contient un nombre de + de 4 chiffres
    		my $num           =~ $1;                            # mon numéro = nombre capturé par la regex
    		my @tab           = split( // ,$num);                    # je splite mon numéro dans un tableau
    		my @tab_invers    = reverse @tab;                        # j'inverse mon tableau
    		my $compteur      = 0;                                   # mon compteur est égal à 0
    		my $nouveau_num   = "";                                  # je crée une chaine de caractère vide dans laquelle je vais mettre mes chiffres
    		my $nouveau_num_endroit;
    		for my $chiffre (@tab_invers) {                          # tant qu'il y a des chiffres dans mon tableau inversé   
    			$compteur++;                                         # j'incrémente mon compteur
    			$nouveau_num .= $chiffre;                            # je concatène chaque chiffre à ma chaine de caractère vide
    			$nouveau_num .= "\x{A0}" if $compteur % 3 == 0;      # je concatène une espace insécable tous les 3 chiffres
     
    		}
    		$nouveau_num_endroit = reverse $nouveau_num;          # je remets mon numéro à l'endroit
            	$ligne = s/$num/$nouveau_nombre_endroit/;                 # remplacement dans la ligne
    	}
     
        # ...
    }

  10. #90
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    Super, ça fonctionne !
    J'avais pas pensé à mémoriser la regex
    Merci

  11. #91
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Tant mieux si ça marche. Je suis actuellement en déplacement à l'étranger (Conférence Perl européenne en Roumanie cette année), désolé si je mets du temps à te répondre.

  12. #92
    Candidat au Club
    Femme Profil pro
    Bibliothécaire
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bibliothécaire

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 3
    Points
    3
    Par défaut
    Pas de soucis, le travail est rendu.
    Verdict lundi

  13. #93
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonne chance.

+ Répondre à la discussion
Cette discussion est résolue.
Page 5 sur 5 PremièrePremière 12345

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 02h59
  2. [RegEx] Expression régulière pour trouver des mots
    Par cbroissa dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2006, 00h39
  3. [RegEx] Simple expression régulière pour ereg_replace
    Par aurapp dans le forum Langage
    Réponses: 6
    Dernier message: 12/03/2006, 13h34
  4. Expression régulière pour récupérer le nom d'un fichier
    Par calimero2611 dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2006, 20h00
  5. Expression Régulière pour float
    Par zebiloute dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo