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 :

REmplacer la deuxième occurence dans un fichier


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut REmplacer la deuxième occurence dans un fichier
    Bonjour

    Je souhaite remplacer la deuxième occurence que je trouve dan un fichier
    La seul référence que j ai est le nombre de / pour y arriver et le fait que je souhaite remplacer la deuxième occurence.
    J'aibien trouver des choses intéressante sur le forum mais elle me coupe mon dernier mot.
    voila un petit exemple

    $chaine = "%lframe thumb newwin% [[http://eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enora/2001_05_Enora_11.jpg| http://eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enora/2001_05_Enora_11.jpg\"Enora au zoo\" ]][[<<]][-Enora à Cholet-]";

    $chaine =~ s/((?:\/[^\/]*){15})(\w+)/$1\/thumbnails$2/;

    print "$chaine\n";

    et sa me donne ...Enor/thumbnailsa/2001_05_E... au lieu de ...Enora/thumbnails/2001_05_E...

    Si quelqu un peut m expliquer et m aider ?

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    utilise la balise code, parce que là c'est illisible, et personne ne prendra la peine de se pencher sur un problème illisible...

    EDIT: je vois que c'est ton premier post, désolé pour cet accueil assez froid
    C'est juste que c'est énervant de voir toujours la même chose, et je n'avais pas vu que tu étais nouveau Modifie ton message, et je reviendrais t'aider !

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Marneus a raison, mais comme c'est ton premier post, je vais tout de même te donner la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((?:/[^/]*){15})(\w+)
    matche la partie suivante de la chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enora/2001_05_Enora_11.jpg| http://eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enora
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $1 = "//eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enora/2001_05_Enora_11.jpg| http://eric.delorme2.free.fr/pmwiki/images/famille/Annee_2001/2001_05_Enor"
    $2 = "a"
    Ce qui n'est pas ce que tu souhaitais, n'est-ce pas ?
    C'est parce que tu as oublié un "/" et que tu as mis un + dans (\w+) : donc la première partie matche les 15 premiers slash et tout ce qui les suit, mais il lui faut un caractère de mot (lettre ou chiffre) au moins, et il ne peut prendre le "/" qui suit ce qu'il vient de matcher (puisque ce n'est pas un \w), la première partie rend donc un caractère : "a", et ce "a" satisfait (\w+), la regex est donc satisfaite.

    Ce que tu veux plutôt c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s{((?:/[^/]*){15})} 
     {$1/thumbnails};
    Par ailleurs il est probable qu'il y ait une façon plus propre et robuste de faire ce que tu veux mais comme je n'ai pas compris ton but... (supprimer la deuxième occurence ? mais de quoi ?)

    --
    Jedaï

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut oups dsl
    bon le prochain coup je n oublierais pas la balise code

    Sinon effectivement je me suis vraiment mal exprimé.
    Je voulais simplement changer la chaine aprés le 15 / Mais j'étais parit sur le fait que le mot aprés le 15 / est le même que aprés le 8 /
    Je suis resté sur le fait qu'il fallait changer la deuxième occurence d'ou une mauvaise question.

    En tout cas merci pour la réponse c est ce que je voulais.

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

Discussions similaires

  1. Remplacement d'occurences dans un fichier
    Par kromartien dans le forum C
    Réponses: 8
    Dernier message: 11/06/2007, 23h06
  2. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03
  3. Occurence dans un fichier
    Par claudesou dans le forum Langage
    Réponses: 4
    Dernier message: 01/05/2006, 18h00
  4. Supprime une occurence dans un fichier
    Par dev7 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 03/02/2006, 14h21
  5. Comptage d'occurences dans un fichier
    Par bonjour69 dans le forum Réseau
    Réponses: 25
    Dernier message: 11/11/2005, 17h24

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