Expressions régulières

[Résolu/Fermé]
Signaler
-
 Utilisateur anonyme -
Salut ! Mon affaire ne marche pas. Je voudrais ne récupérer que les chiffres et le point d'une valeur. Voici mon code en VB 2008 :

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As Double
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
ExpRegPrix = System.Text.RegularExpressions.Regex.IsMatch(Tmp, "[^0-9.]")
End Function

Et dans un Sub :
Dim Prix As Double
Prix = ExpRegPrix("0.25 ¤")
Form1.TSStatusLabelTotal.Text = Format(Prix, "0.00 ¤")

Le résultat donne : 0,00 ¤ mais Prix = -1

Le symbole monétaire ¤ peut changer donc je cherche une expression régulière qui me retourne que les chiffres et le point.
Merci

2 réponses

Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221
Bonjour

ci dessous le pattern utilisé en vba:
"(\d?\d?\d)|(,)"

peut-^tre que....
Utilisateur anonyme
Pas du tout ! J'ai finalement trouvé.

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As String
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
Dim regex As System.Text.RegularExpressions.Regex = New Regex("\d+\.\d+")
Dim match As Match = regex.Match(Tmp)
ExpRegPrix = match.Value
End Function
Utilisateur anonyme
Pour faire plus simple :
Déclarer :
Imports System.Text.RegularExpressions

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As String
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
Dim Resultat As Match = Regex.Match(Tmp, "\d+\.\d+")
ExpRegPrix = Resultat.Value
End Function
Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221
Très sympa, le "pas du tout !"

MERCI
Désolé mais vous n'avez pas testé avant parce cela ne donnait pas de résultat. De plus, vous aviez mis la virgule alors que je l'avais remplacé par le point.
Messages postés
16513
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
20 septembre 2021
3 221 > Utilisateur anonyme
Désolé, mais j'avais bien précisé "en vba" et effectivement oublier de remplacer une virgule par un point est rédhibitoire
je ne vous importunerez plus ; je ne suis pas comme vous un génie méconnu qui ne lit pas et est particulièrement impoli

en Blacklist
Voilà la réponse :
Imports System.Text.RegularExpressions

Module ModuleExpReg
Public Function DigitPointDigit(ByVal Convertir As String) As Double
'Récupère que les chifrres et le point
Dim Tmp As String = Convertir.Replace(",", ".")
Dim Resultat As Match = Regex.Match(Tmp, "(\d+\.\d+|\.\d+|\d+\.|\d+)")
Return Val(Resultat.Value)
End Function
End Module

C'est un module avec toutes les possibilités :
0.12
.12
3
3.
Etc.