Expression reguliere comment y arriver...
tokolo
-
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?
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
-
J'ai rien pigé. Tu fais des expressions régulières dans quel langage ?
-
-
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! -
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.