bonjour.
j'arrive pas à récupérer les nombres négatifs avec les expressions régulières.
([0-9]+) j'ai ajouté un tiret : [-][0-9]+ mais sa ne marche pas ...
bonjour.
j'arrive pas à récupérer les nombres négatifs avec les expressions régulières.
([0-9]+) j'ai ajouté un tiret : [-][0-9]+ mais sa ne marche pas ...
pourtant je viens de tester et ça marche. Fait voir ton code ainsi que la string en entrée sur laquelle tu veux effectuer ta recherche STP
Précision, même ça :fonctionne chez moi
Code : Sélectionner tout - Visualiser dans une fenêtre à part (-[0-9]+)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Dim regexp As String = "[^:]*\s(-([0-9]+))\|([0-9]+)@[^\[]*\[([0-9]+)\|([0-9]+)[\[\w]" Do If str = ligne.IndexOf("BO_") Then ligne2 = SR.ReadLine() tabS1 = Split(ligne2, "SG_") If tabS1.Length > 1 Then tabS2 = Split(tabS1(1), ":") If tabS2.Length > 1 Then donnée = tabS2(0) SW.WriteLine("Dim" & donnée & " as integer") End If End If If (rg.IsMatch(ligne2)) Then For Each g In rg.Match(ligne2).Groups For Each c In g.Captures position_bit = rg.Match(ligne2).Groups(1).Value() length = rg.Match(ligne2).Groups(2).Value() Next c Next g End If 'MsgBox(position_bit) 'MsgBox(length) pos_bit_final = ((position_bit + 1) / 8) - 1 If ((position_bit + 1) Mod 8) = 0 And length = 8 Then SW.WriteLine(donnée & "=CInt(tempRxCanMsg.m_bData(" & pos_bit_final & "))") SW.WriteLine("") ElseIf length < 8 Then SW.WriteLine(donnée & "=CInt(findData(tempRxCanMsg.m_bData(" & (position_bit \ 8) & ")," & position_bit Mod 8 & "," & length & "))") 'ElseIf length > 8 And ((position_bit + 1) Mod 8) = 0 Then ' SW.WriteLine(donnée & "=CInt(findData(tempRxCanMsg.m_bData(" & (position_bit \ 8) & ")," & position_bit & "))") End If End If Loop Until chaine <> ligne2.IndexOf(" SG_") SR.Close() SW.Close() End Sub
mais j'ai rien sa m'affiche des 0:
Dim Acceleration_V as integer
Acceleration_V =CInt(findData(tempRxCanMsg.m_bData(0),0,0))
Dim Acceleration_H as integer
Acceleration_H =CInt(findData(tempRxCanMsg.m_bData(0),0,0))
Dim Jauge_carburant as integer
Jauge_carburant =CInt(findData(tempRxCanMsg.m_bData(0),0,0))
Dim Angle_Volant as integer
Angle_Volant =CInt(findData(tempRxCanMsg.m_bData(0),0,0))
normalement sa doit marcher et afficher plusieurs nombres..
Tiens c'est toi ça faisait longtemps.
Bon bref, j'ai repris mon code qui marchais bien pour ton PB, j'ai juste comme toi ajouter le "-" sur le premier chiffre à récupérer pour prendre en compte le fait qu'il soit négatif, et ça fonctionne. Même avec ton expression régulière.
Donc ton PB vient d'ailleur (peut-être du code qui suit, mais moi le VB.Net....)
mais sa t'affiche vraiment les nombres négatifs?
ben oui, même les positif et les négatifs si je change :
(-[0-9]+) en (-[0-9]+|[0-9]+)
sa marche toujours pas et sa me dégoute..
en fait le problème c'est quand je lis les lignes et extraire les nombres il ya parfois des nombres négatifs et des fois non sa dépend des informations... donc j'ai écris sa dans le code pour le regex:
*\[-]([0-9]+)
mais je sais pas si c'est bon ou pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim regexp As String = "[^:]*\s *\[-]([0-9]+)\|([0-9]+)@[^\[]*\[([0-9]+)\|([0-9]+)[\[\w]"
La regexp pour un nombre négatif OU positif (ici seulement pour le premier chiffre), c'est :
Le code qui dit positif OU négatif, c'est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part "[^:]*\s(-[0-9]+|[0-9]+)\|([0-9]+)@[^\[]*\[([0-9]+)\|([0-9]+)[\]\w]*"
Code : Sélectionner tout - Visualiser dans une fenêtre à part (-[0-9]+|[0-9]+)
ok merci je vais tester et dsl pour le dérangement...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager