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. 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
  2. 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