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 / extraction de données dans une chaine


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1
    Points : 2
    Points
    2
    Par défaut regex / extraction de données dans une chaine
    bonjour,
    je cherche à extraire de cette chaine...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href='toto.html'{/literal}"
    ...les blocs suivant à la l'aide d'une regexp Javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1/ {if a=="1"}test2.html{else}test3.html{/if}
    2/ {assign var="test" value="tttt"}
    3/ {if a>=3}test3.html{/if}
    Je ne veux pas extraire le bloc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {literal}location.href=''{/literal}
    parce qu'il est encadré par des guillemets onclick="..."

    Ces blocs sont des blocs smarty, les règles sont les suivantes :

    {tag param}......{/tag}
    ou
    {tag param}
    ou
    {tag}

    la regexp pourrait ressembler à ça mais marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var t='{if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href=\'toto.html\'{/literal}"';
     
    while ((v = /{[^}]*}/gi.exec(t))!=null){
      console.info(v);
    }
    J'obtiens la liste de tous les {..} mais pas les blocs smarty comme définit ci-dessus.

    pouvez-vous m'aider ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    j'ai pas très bien saisi la syntaxe de tes tags ...

    mais bon voici un début de piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \{(tag)\b[^}]*\}(.*?)\{/\1\}
    pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {tag param="klj"}dsfsqfsdsdf{/tag}

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

Discussions similaires

  1. [RegEx] Extraction de données dans une chaine variable
    Par stormfever dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2012, 19h15
  2. extraction de données dans une chaine
    Par yag00 dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2008, 15h03
  3. vc++(6)+extraction des données dans une image(.tif)
    Par spootnic22 dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/11/2006, 17h14
  4. extraction des données dans une table Access
    Par moabomotal dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 12h17
  5. [Regex]Recherche de mots dans une chaîne
    Par lionel69 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 17/11/2005, 19h20

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