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 :

Opérateurs de remplacement


Sujet :

Langage Perl

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut Opérateurs de remplacement
    Bonjour à tous,

    J'ai besoin d'un petit coup de main.
    Comme je suis une grosse feignasse j'ai voulu utiliser la fonction rechercher/remplacer avec des regexp afin de modifier un fichier. Or cela n'à pas marché (vous verrez pourquoi après ).

    Mon fichier ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MOT 100 MOT 200
    MOT 101 MOT 201
    MOT 102 MOT 202
    ...
    Je voulais ajouter 50 à chaque nombre afin que cela commence à 150 dans l'exemple ci-dessus.

    Pour modifier le fichier je compte utiliser le module Tie::File mais ce n'est pas ça le souci.

    Je ne parviens pas à remplacer une partie de la chaîne. J'ai cru comprendre que l'opérateur s/// était notre amis dans ce cas mais je n'arrive pas l'utiliser.

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    print $a= "ligne 123 et 456";
    $a = s/(\d{3})/$1+50/;
     
    print $a;
    Mais la chaîne n'est pas modifiée.


    Aussi je vous demande de l'aide, je veux juste modifier un bout de chaîne.
    En dernier recourt je passe la string dans un tableau en splitant sur \s puis je modifie les cases et je join mais je me demandais si c'était pas plus rapide le s///...

    Voili voilou à votre bon coeur M'sieurs-Dames

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    A ton exemple, il manque 3 choses pour que cela fonctionne :
    - le =~ au lieu du =
    - le modifier 'g' pour global pour dire de remplacer toutes les occurences et pas seulement la première
    - le modifier 'e' pour spécifier que la partie droite doit être évaluée comme du code (ici une addition)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use strict;
    use warnings;
     
    my $string = 'MOT 100 MOT 200';
    print $string."\n";
     
    $string =~ s/(\d{3})/$1+50/eg;
    print $string."\n";

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut
    J'ai oublié de recopier le "~" mais sinon il y était.
    Merci pour ces indications concernant le "e" et le "g".

    Au final ce fut plus long de tenter de faire le script que de tout modifier à la main mais maintenant sa marche ! Gare à vous prochains fichiers ! Je suis armé !

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2021, 12h00
  2. remplacement opérateur php
    Par loribac dans le forum Langage
    Réponses: 6
    Dernier message: 26/08/2013, 10h29
  3. Réponses: 49
    Dernier message: 02/02/2013, 02h10
  4. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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