Jiriki: Regulärer Ausdruck

Hi Leute,

Ich bastel jetzt seit zwei Tagen an einem regulären Ausdruck unter PHP rum, der mir aus einem String einen Punktewert auslesen soll, der vor dem "Komma" mindestens zwei, höchstens drei Ziffern stehen hat, und danach eine oder zwei Dezimalstellen. Es kann zudem vorkommen, dass ein Prozentzeichen die Zahl abschließt.

Der momentane Stand des regulären Ausdrucks ist:

  
preg_match( "!\b(\d{1,3}\.\d{1,2}%*)[\w,^]!", $stpt[ "test" ], $results )  

Dieser Ausdruck funktioniert für den Beispieldatensatz

STPT: 2004 at Paxton Farm, OH, 99.74 points

insofern, als dass mir preg_match 99.7 ausgibt. Es findet ein Ergebnis, jedoch hat sich preg_match dafür entschieden, nur eine Dezimalstelle auszugeben, dabei soll er mir doch laut dem regexp erst dort mit der Ausgabe enden, wo entweder ein Leerzeichen, oder ein Komma oder das Ende des Datensatzes liegt, oder nicht? Das wäre nach der ersten Dezimalstelle doch nicht gegeben.

Danke für jeden Tipp.

  1. der vor dem "Komma" mindestens zwei, höchstens drei Ziffern stehen hat
    preg_match( "!\b(\d{1,3}.\d{1,2}%*)[\w,^]!", $stpt[ "test" ], $results )

    -----------------------^

    hier eine 2,3 (minestes 2, höchstens 3)
    behebt dein problem zwar nicht, sollte aber deinen ausdruck richtiger machen

    1. hier eine 2,3 (minestes 2, höchstens 3)
      behebt dein problem zwar nicht, sollte aber deinen ausdruck richtiger machen

      Stimmt. Die Lösung ist das "\w" durch ein "\s" zu ersetzen. Ich dachte intuitiv aber falsch bei \w an "whitespace" und dabei repräsentiert es ein Wortelement ...

      Danke trotzdem!