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 :

Expression Régulière pour remplacer mot non placé entre < et >


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut Expression Régulière pour remplacer mot non placé entre < et >
    Hello,

    Voilà mon problème, je dois scanner un fichier HTML qui contient donc du texte et des balises <..> et effectuer le remplacement d'une chaîne de caractère par cette même chaîne de caractère mais en gras.
    Tout fonctionne correctement mais si par exemple je dois remplacer la chaîne de caractère "le" il va me remplacer tous les "le" qu'il va rencontrer par "le" mais aussi dans les balises comme par exemple <table>

    Donc étant donné que je ne connais pas du tout les expressions régulières je lance une bouteille à la mer pour savoir si quelqu'un peut me dire comme faire ???

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    Bonjour,
    Ce serait peut être plus facile à comprendre s'il y avait un exemple pour comprendre ton problème

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    youps

    ma chaine de caractere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $chaine = "<i>le chien</i> est très <table><tr><td>petit</td><td>grand</td></tr></table>"
    $search_criteria="le"
    $str_replace="<b>le</b>"
    
    $resultat = str_replace($search_criteria, $str_replace, $chaine)
    
    $resultat = "<i><b>le</b> chien</i> est très <tab<b>le</b>><tr><td>petit</td><td>grand</td></tr></tab<b>le</b>>"
    Alors que moi je voudrais le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = "<i><b>le</b> chien</i> est très <table><tr><td>petit</td><td>grand</td></tr></table>"
    J'espère avoir été clair dans mon exemple !

  4. #4
    Membre expérimenté Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Par défaut
    Bonjour,

    Le motif que tu recherches est présent entre 2 balises : 1 fermante et une entrante ce qui donne >motif<

    Tu peux essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $search_criteria=">le<"
    $str_replace="<b>le</b>"

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    oui mais si je recherche ">le<" il ne va jamais me remplacer le de ">le chien<" ?
    C'est pour cela que je me disais qu'une expression régulière pourrait peut être solutionner les choses non ?

  6. #6
    Membre expérimenté Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Par défaut
    ok je comprends voici un début de code que tu peux améliorer si besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($chaine =~ /\>(.*)\</i)
    	$motif = $1;
    	if ($motif =~ /$search_criteria/i) {
    		$chaine =~ s/$search_criteria/\<b\>$search_criteria\<\/b\>/ig;
    	}

Discussions similaires

  1. [RegEx] Expression régulière pour remplacer des blocs ?
    Par kolbek dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2011, 17h32
  2. Réponses: 4
    Dernier message: 21/10/2009, 10h17
  3. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  4. Expression régulière pour remplacer une apostrophe
    Par syrius31 dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2008, 20h34
  5. [RegEx] expression régulière pour remplacer des balises
    Par oceanbigone dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 18h11

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