salut tout le monde!
J'ai toujours le même souci avec la détection d'une chaine de caractère dans un fichier texte.
j'ai essayé les expressions régulières avec la méthode regex mais cela n'aboutit pas au résultats souhaités.
Dans un fichier texte je dois détecter une chaine de caractère comprise entre "SG_ " ([A-Za-z][_][\s]) et ":" ([:]) et je ne parviens pas jusqu'à présent à le faire correctement.
exemple de lignes où je détecte cette chaine de caractères:
SG_ CMPT_PROC4 :
SG_ CHECK_SUM_CMD_BRI_1 :
j'ai ecri ce code
et sur le fichier texte j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Public Function Func1(ByVal line As String) As String Dim r As New RegularExpressions.Regex("[0-9]+", RegularExpressions.RegexOptions.Compiled) Return r.Match(line).Groups(0).Value End Function Public Function Func2(ByVal line2 As String) As String Dim r As New RegularExpressions.Regex("[_][\s][a-zA-Z0-9]+[_]?[a-zA-Z0-9]+", RegularExpressions.RegexOptions.Compiled) Return r.Match(line2).Groups(0).Value End Function Public Sub lecture(ByVal fichier As String) Do ligne = SR.ReadLine() Loop Until (str = ligne.IndexOf("BO_")) ID = Func1(ligne) SW.WriteLine(ID) SW.WriteLine("ID_received =" & ID) Do If str = ligne.IndexOf("BO_") Then ligne2 = SR.ReadLine() donnée = Func2(ligne2) SW.WriteLine("Dim" & donnée & " as integer") End If Loop Until chaine <> ligne2.IndexOf(" SG_") '& ligne2.LastIndexOf(":") SR.Close() SW.Close() End Sub
70
ID_received =70
Dim_ CMPT_PROC4 as integer
Dim_ CHECK_SUM as integer
Dim_ SBRI1_2 as integer
Dim_ SBRI1_1 as integer
Dim_ SBRI1_0 as integer
Dim_ SBRI5_2 as integer
Dim_ SBRI5_3 as integer
Dim_ SBRI5_1 as integer
Dim_ int_anti as integer
Dim_ int_anti as integer
Dim as integer
mais j'ai toujours "l'underscore" (_) au début et j'arrive pas à récupérer une longue chaine comme : CHECK_SUM_CMD_BRI_1 et je récupère juste CHECK_SUM.
j'ai bien fouillé dans les expressions régulières mais j'ai pas trouvé de solutions parfaites pour cette application.
je viens de tester
mais pas de résultats.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 chaine_test = ligne2.IndexOf("SG_") & "" & ligne2.EndsWith(":")
j'attends vos idées et solutions et merci d'avance.
Partager