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 :

Suppression des commentaires multilignes [RegExp]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut Suppression des commentaires multilignes
    Bonjour,
    Je voudrais supprimer les commentaires multilignes d'un fichier en python ils commencent et finissent par """
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    """ Mon petit commentaire
    passionnant 
    sur plusieurs lignes
    """

    J'ai tenté plein de truc mais je n'y arrive pas. Le truc le plus proche c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = data.replace(/"{3}([^"{3}])*"{3}/g,"")
    Bizarrement ça me regroupe tous les commentaires multiligne sous le premier.
    Quelqu'un peut il m'aider?
    Merci d'avance.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    essaye avec m ?
    un bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /"{3}(\n?)([^"](?!""))+..(\n?)"{3}/g
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut
    Merci pour la réponse. Aucun des deux ne marche. je ne connais pas la séquence .. ça fait quoi ?

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 124
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "{3}(\n?)([^"](?!""))+..(\n?)"{3}\n
    le \n en fin de RegExp pour éliminer les sauts de ligne à l’intérieur du commentaire.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut
    Ca ne marche pas non plus (en fait ça ne marche que pour la première occurence).
    Du coup je vais prendre le pb autrement en lisant le fichier ligne par ligne comme ça j'exploserais aussi la limite de taille de string.

    Merci encore pour votre aide.

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 983
    Par défaut
    Attention, comme il n'y a pas de syntaxe prévue pour écrire des commentaires multilignes en Python, on utilise à la place des chaînes de caractères, donc prend garde à ne pas supprimer autre chose que des commentaires. Comme Python est un langage indenté, tu peux ne viser que les """ qui se trouve en début de ligne (*):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt = txt.replace(/^""".*?"""/sgm, '');
    Le modificateur m change le sens de l'ancre ^ de "début de chaîne" à "début de ligne", le modificateur s autorise le . à matcher les sauts de ligne (anciennement ce modificateur n'existait pas en Javascript et on remplaçait alors le point par [\s\S]).


    (*) Et encore! Dans le pire des scénarios tu peux trés bien avoir le code python qui suit:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    """commentaire
    multiligne"""
     
    mavar = '''contenu
    d'une
    """ variable """
    indispensable'''

    Donc la solution, c'est plutôt d'utiliser un parser pour ce langage. (ça existe en Python, pour javascript/nodeJS je ne sais pas).

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut
    Merci de m'avoir rappelé ça :
    Attention, comme il n'y a pas de syntaxe prévue pour écrire des commentaires multilignes en Python, on utilise à la place des chaînes de caractères, donc prend garde à ne pas supprimer autre chose que des commentaires. Comme Python est un langage indenté, tu peux ne viser que les """ qui se trouve en début de ligne (*):
    Je vais voir comment.
    J'avais solutionné le problème en remplaçant tous les saut de ligne par des caractères à la con (§€$ : une chaine vraiment improbable) puis je supprimais les chaine entre """ puis je remettait les sauts de ligne. En attendant une meilleur solution que vous venez sans doute de me fournir.

    Merci

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut
    Du coup ça marchait presque j'ai du rajouter la suppression de caractères espaces au début et ça fonctionne super:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = data.replace(/^\s*"{3}.*?"{3}/sgm,"")
    Merci beaucoup CosmoKnacki.

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

Discussions similaires

  1. SED: Script de suppression des commentaires dans d'un fichier file.[c|cpp]
    Par Teudjy dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/04/2014, 02h23
  2. Réponses: 4
    Dernier message: 03/02/2011, 20h58
  3. Suppression des commentaires Java
    Par riyad25h dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 21/06/2010, 11h40
  4. Suppression des commentaires
    Par thtfr dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2009, 19h37
  5. Suppression des commentaires dans des scripts
    Par julinho9 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 06/03/2009, 19h26

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