RegEx: Zahlen aus String filtern

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • RegEx: Zahlen aus String filtern

    Hallo,

    ich bin ein bisschen am verzweifeln. Ich versuche alle möglichen Zahlenkombinationen aus einem String zu filtern.

    Mögliche Zahlenkombinationen:
    Code:
    Eingabe:
    1 A 12 B 123.123 C 123,456 D 123.123,321 E 123 321 F
    Mein momentaner Filterausdruck sieht so aus:

    PHP Code:
    Filter:
    preg_match_all("/[0-9]{1,10}[\,\.]?[0-9]*/u"$eingabe$ausgabe); 

    PHP Code:
    Ausgabe:
    Array ( [
    0] => Array ( [0] => [1] => 12 [2] => 123.123 [3] => 123,456 [4] => 123.123 [5] => 321 [6] => 123 [7] => 321 ) ) 

    Wie man sieht wird momentan noch die Zahl zerstückelt die mehrere Punkte oder Kommas enthält bzw. durch ein Leerzeichen getrennt wird. Kann jemand helfen, das diese Zahlenkombinationen nicht getrennt werden?

    Viele Grüße
    Master.of.Freaks
    Last edited by MasterOfFreaks; 14-11-2009, 22:04.

  • #2
    Derzeit verlangst du in deinem Muster eine bis zehn Ziffern, dann optional einen Backslash oder ein Komma oder nochmal einen Backslash oder einen Punkt, und dann noch mal beliebig viele Ziffern.

    Wenn du auch die Zahlen willst, in denen Komma oder Punkt mehrfach vorkommen können - dann passt du logischerweise dein Muster so an, dass es erst mal Ziffern verlangt, dann optional Ziffern oder Komma oder Punkt, und dann zum Abschluss noch mal Ziffern.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Okay, wenn man das nochmal so geschrieben bekommt sieht man doch schon mal gleich klarer. Habe mein Filter nochmal angepasst:

      PHP Code:
      preg_match_all("/[0-9]{1,}([\,\. ]?[0-9])*/u"$text$ausgabe); 
      Code:
      Array ( [0] => Array ( [0] => 1 [1] => 12 [2] => 123.123 [3] => 123,456 [4] => 123.123,321 [5] => 123 321 ) [1] => Array ( [0] => [1] => [2] => 3 [3] => 6 [4] => 1 [5] => 1 ) )
      Array[0] sieht jetzt wirklich viel versprechend aus. Muss ich Array[1] als kollateral Schaden hinnehmen oder kann man den Filter noch weiter optimieren?

      Viele Grüße
      Master.of.Freaks

      Comment


      • #4
        Originally posted by MasterOfFreaks View Post
        Array[0] sieht jetzt wirklich viel versprechend aus. Muss ich Array[1] als kollateral Schaden hinnehmen oder kann man den Filter noch weiter optimieren?
        ?: ist dein Freund.

        Und das /u erscheint mir unpassend. Keines deiner Suchmuster braucht UTF-8-Kodierung.
        Last edited by fireweasel; 14-11-2009, 21:46.
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Comment


        • #5
          Super, alles klar, hier nochmal das ganze Beispiel:

          PHP Code:
          preg_match_all("/[0-9]{1,}(?:[\,\. ]?[0-9])*/"$text$ausgabe); 
          Der Unicode Modifier macht in dem Falle keinen Sinn, das stimmt.

          Vielen Dank.

          Viele Grüße
          Master.of.Freaks

          Comment

          Working...
          X