Expressions régulières

Résolu
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

  1. 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.
    0
    1. Contributeur
      Bonjour

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

      peut-^tre que....
      0
      1. 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
        0
      2. 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
        0
      3. Contributeur
        Très sympa, le "pas du tout !"

        MERCI
        0
      4. 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.
        0
      5. Contributeur
        @Utilisateur anonymeDé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
        0