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

JavaScript Discussion :

RegEx tres tres pointu


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Points : 53
    Points
    53
    Par défaut RegEx tres tres pointu
    J'ai besoin d'utiliser une regEx(regular expression) pour enlever des parties à du texte

    En gros, J'insère dans mon code html des balises: <EXCLUDEPRINTSECTION> et </EXCLUDEPRINTSECTION>

    quand j'envoie la page a mon pop-up d'impression, je dois enlever ces 2 balise et tout ce qu'il y a entre les deux. Cependant, dans ma page j'ai ces balises a plusieurs endroit...

    voici le regEx que je passe a ma fonction replace:
    <EXCLUDEPRINTSECTION>(.|\n)*</EXCLUDEPRINTSECTION>

    jusque la tout va bien si je n'ai qu'une seule foi le set de balise

    sinon il supprime tout ce qu'il y a entre
    la premier occurance de <EXCLUDEPRINTSECTION>
    et la derniere occurence de </EXCLUDEPRINTSECTION>

    ya t'il un moyen directement avec un regEx et replace ou je vais devoir utiliser une boucle, des indexOf et des substr?

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Tu dois utiliser le drapeau "g" pour remplacer toutes les fois ou la regexp est rencontrée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "aa".replace(/a/, "b") ==> "ba"
    "aa".replace(/a/g, "b") ==> "bb"
    "AA".replace(/a/i, "b") ==> "bA"
    "AA".replace(/a/gi, "b") ==> "bb"

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    J'ai réussis avec la fonction split en utilisant
    "<EXCLUDEPRINTSECTION>" comme premier split et en utilisant "</EXCLUDEPRINTSECTION>" comme deuxieme split sur chaque index du premier sauf l'index 0.

    Ensuite, je concatenne l'index 0 du premier split avec tout les index 1 du deuxiememe split
    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
    texte initial:
    partie1<EXCLUDEPRINTSECTION>partie2</EXCLUDEPRINTSECTION>partie3<EXCLUDEPRINTSECTION>partie4</EXCLUDEPRINTSECTION>partie5<EXCLUDEPRINTSECTION>partie6</EXCLUDEPRINTSECTION>partie7
    
    
    Étape 1: Split sur <EXCLUDEPRINTSECTION>
    Index 0:
    partie1
    Index 1:
    partie2</EXCLUDEPRINTSECTION>partie3
    Index 2:
    partie4</EXCLUDEPRINTSECTION>partie5
    Index 3:
    partie6</EXCLUDEPRINTSECTION>partie7
    
    Étape 2: Split sur </EXCLUDEPRINTSECTION>
    Index 0:
    partie1
    Index 1:
    Index 1.0:
    partie2 * a enlever
    Index 1.1:
    partie3
    Index 2:
    Index 2.0:
    partie4 * a enlever
    Index 2.1:
    partie5
    Index 3:
    Index 3.0:
    partie6 * a enlever
    Index 3.1:
    partie7
    
    Ensuitwe ne reste plus qu'a concaténer les partie 1, 3, 5 et 7

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    utilises la regexp suivante (tu n'étais pas loin !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <EXCLUDEPRINTSECTION>(.|\n)*?</EXCLUDEPRINTSECTION>
    Explication :
    un '*' suivi d'un '?' va chercher une chaine de caractère minimum (la plus courte possible) qui convient à ta regexp.

    Bien entendu, n'oublies pas le flag 'g'

  5. #5
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    on utilise le terme glouton pour *, ce qui veut dire qu'elle mange tout ce qu'elle peut jusqu'à trouvé ce qui est précisé après elle...

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

Discussions similaires

  1. Taille de tableau tres tres grand (BCB6)
    Par cquadjul dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/04/2006, 08h48
  2. Tres tres débutant(découverte de l'Oracle)
    Par argon dans le forum Oracle
    Réponses: 14
    Dernier message: 19/03/2006, 19h14
  3. [Compilation] Chaine string Tres tres longues
    Par Clorish dans le forum Langage
    Réponses: 9
    Dernier message: 20/07/2005, 11h20
  4. Impression très très lente avec Samba
    Par Daav dans le forum Réseau
    Réponses: 4
    Dernier message: 29/12/2004, 18h45

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