Expression reguliere comment y arriver...

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

  • Votes
  • Date
  • Date décroissante
  1. J'ai rien pigé. Tu fais des expressions régulières dans quel langage ?
    1. 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!
      1. 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.