Partage
  • Partager sur Facebook
  • Partager sur Twitter

Expressions régulieres

Sujet résolu
    25 mai 2016 à 16:36:45

    Salut à tous!

    J'ai besoin de faire un petit programme Java qui trouve dans un fichier javaScript les déclarations de fonctions ainsi que leurs appels

    par exemple :

    function toto(){
     ...
    }
    
    function tata(){
    
    }
    
    var test = toto();

     Ma méthode permettant de récupérer les déclarations doit me retourner :

    - toto

    - tata

    Ma méthode permettant de récupérer les appels doit me retourner :

    - toto (la fonction toto est appelée à la fin)

    Pour trouver les déclarations, j'utilise l'expression régulière suivante : (?<=function)\\s+(\\w+)\\s*\\(

    Malheureusement je n'arrive pas a écrire une expression me permettant de récupérer uniquement les appels... A chaque fois je cumule les déclarations et les appels...

    Merci pour votre aide!

    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2016 à 19:34:56

      Salut,

      Tu peux essayer cela :

      (?:^|\s+)(\w+)\s*\([^)]*\)(?=\s*[^{\s]|$)

      Mais ça ne sera pas parfait (par exemple ne gère pas "m1(m2(), m3())").

      Un petit test de la regexp :

      https://regex101.com/r/qU0rA9/8

      A mon avis, il faudrait mieux faire un parseur basé sur la syntaxe javascript qu'utiliser une regexp.

      Tu dois pouvoir trouver des libs qui font ça, par exemple : https://github.com/google/caja/blob/master/src/com/google/caja/parser/js/Parser.java

      [Edit]

      Tu peux essayer ça aussi, ça doit être un peu mieux, mais ça ne sera pas parfait non plus :

      (?:(?<!functio)\S\s+|^\s*|[\(,])(\w+)\s*(?=\()


      https://regex101.com/r/qU0rA9/11

      [/edit]

      -
      Edité par macaque 25 mai 2016 à 20:59:13

      • Partager sur Facebook
      • Partager sur Twitter
        30 mai 2016 à 13:42:41

        Merci pour tes réponses ça donne une bonne piste

        Je met en résolut car je devrais pouvoir m'en sortir avec ca

        Cdt,

        • Partager sur Facebook
        • Partager sur Twitter

        Expressions régulieres

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown