RegEx: Zahlen aus String filtern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von MasterOfFreaks; 14.11.2009, 23: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.

    Kommentar


    • #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

      Kommentar


      • #4
        Zitat von MasterOfFreaks Beitrag anzeigen
        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.
        Zuletzt geändert von fireweasel; 14.11.2009, 22:46.
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #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

          Kommentar

          Lädt...
          X