Expression reguliere comment y arriver...

tokolo -  
 tokolo -
Salut les copain (des pyces ... un jeu de mots)
j'ai un fichier de ce type

//Bus1
input [3:0] a,
input [5:0] b ,
//bus 2
output sortie,
output [5:0] toko,

je souhaite obtenir cet arbre :
+Bus1
+a
+b
+Bus2
+sortie
+toko

je veux faire cela avec une expression reguliere.
la patern que j'ai essaye est la suivante
l'expression reguliere est globale et multiligne

"\s*//(.*)$(.*)"
je recupere bien le nom de mes Bus1 et Bus2 dans $1 ais dans $2 je n'ai rien.
que faire
et d'un point de vue général comment récupérer une chaine s'il n'y a pas de délimiteur de fin?

4 réponses

  1. EminoMeneko Messages postés 2499 Statut Membre 318
     
    J'ai rien pigé. Tu fais des expressions régulières dans quel langage ?
    0
  2. fidraman Messages postés 196 Statut Membre 9
     
    citer svp la language avec laquelle tu travaille ?
    0
  3. tokolo
     
    Bonjour et desolé si je n'ai pas été clair.
    je pense que le langage n'a pas de rapport direct , mais si cela peut aider, je programe en VBasic.
    voici mon code.

    Dim re As RegExp
    Dim Match As Match
    Dim Matches As MatchCollection
    Dim RetStr As String
    Set re = New RegExp
    re.Global = True
    re.MultiLine = True
    re.Pattern = "^\s*//(.*)$(.*))"
    Set Matches = re.Execute(TextBox1.Text) ' TextBox1.Text contient le texte cité ci dessous.
    Debug.Print Matches.Count
    For Each Match In Matches
    Debug.Print "BUS"; Match.SubMatches(0); Len(Match.SubMatches(0))
    Debug.Print "Signals"; Match.SubMatches(1); Len(Match.SubMatches(1))
    Next

    le texte qui se trouve dans textBox1.Text est

    //bus1
    input reg [3:0]data,
    input enable,
    //bus2
    output clk,

    et voici ce que j'obtiens
    2
    BUSbus1
    5
    Signals 0
    BUSbus2
    5
    Signals 0

    il retrouve bien le premier element mais pas le second. (chaine de caracter nulle)
    merci de votre aide!
    0
  4. tokolo
     
    avec l'expression reguliere suivante :
    "//(.*)\r\n(.*)"
    j'obtiens ce que je veux. mais pas avec
    "//(.*)$(.*)"
    mon probleme est résolu, mais je ne sais pas pourquoi le $ qui indiaue normalement une fin de ligne ne me donne pas le bon resultat.
    0