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
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
et sur le fichier texte j'ai:

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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
chaine_test = ligne2.IndexOf("SG_") & "" & ligne2.EndsWith(":")
mais pas de résultats.
j'attends vos idées et solutions et merci d'avance.