Markus: Reguläre Ausdrücke

Hallo,

ich habe folgendes Problem:

Ich soll einen regulären Ausdruck entwerfen der auf folgendes Muster passt:

(1) Mannschaft (Zeit)

Hier soll nun also die Platzziffer, die Mannschaft und die Zeit in ein Array geschrieben werden. Dafür habe ich bisher folgendes verwendet:

preg_match("/^(([0-9]+)) ([^(]+) (([-\d]+))/i",  $string, $results);

Das Problem ist, dass manchmal nur noch die Platzziffer und nicht mehr die Zeit bekannt ist und diese deshalb samt der Klammerung nicht mehr eingegeben wird.
Wie muss ich nun den oberen regulären Ausdruck schreiben, dass mir trotz fehlender Zeiteingabe zumindest noch die Platzziffer und die Mannschaft in das array $results geschrieben wird.

Vielen Dank für eure Hilfe.
Gruß
Markus

  1. hi,

    preg_match("/^(([0-9]+)) ([^(]+) (([-\d]+))/i",  $string, $results);

    Das Problem ist, dass manchmal nur noch die Platzziffer und nicht mehr die Zeit bekannt ist und diese deshalb samt der Klammerung nicht mehr eingegeben wird.
    Wie muss ich nun den oberen regulären Ausdruck schreiben, dass mir trotz fehlender Zeiteingabe zumindest noch die Platzziffer und die Mannschaft in das array $results geschrieben wird.

    dann solltest du dafür sorgen, dass der letzte teilausdruck nicht vorkommen _muss_, sondern _optional_ ist.

    dazu solltest du ihn mit einem weiteren geeigneten modifier versehen, ?, * oder auch {0,1} - je nachdem, was für deine anforderung am besten passt.

    (evtl. ist nochmalge umklammerung des kompletten teilausdrucks erforderlich; dass diese klammerung dann eine eigene back reference erzeugt lässt sich aber auch noch ausschalten.)

    gruss,
    wahsaga

    1. Hallo,

      danke für deine Antwort. Aber hat diese irgendetwas inhaltlich Sinnvolles, eigentlich nur lauwarmer Brei, den Du hier von Dir gegeben hast. Nur weil Du hier mit Schlagworten wie "back reference, modifier" um Dich wirfst, hast Du auch nicht mehr Ahnung. Aber eine Diskussion zu diesem Theam wurde hier ja vor kurzem geführt.

      Inzwischen habe ich es dank SelfHTML -> Perl -> Reguläre Ausdrücke durch ein wenig Ausprobieren gelöst.

      1. hi,

        danke für deine Antwort. Aber hat diese irgendetwas inhaltlich Sinnvolles, eigentlich nur lauwarmer Brei, den Du hier von Dir gegeben hast. Nur weil Du hier mit Schlagworten wie "back reference, modifier" um Dich wirfst, hast Du auch nicht mehr Ahnung. Aber eine Diskussion zu diesem Theam wurde hier ja vor kurzem geführt.

        was soll das denn jetzt?
        ich habe versucht, dir tips zu geben, wie man das problem lösen könnte.

        back reference und modifier sind beim umgang mit RegEx gebräuchliche ausdrücke, dass du diese nicht kennst, kann ich ja nicht wissen.

        in dem fall hättest du ja gerne noch mal nachfragen können, dann hätte sie dir sicher gerne jemand erklärt oder dir einen link gepostet.

        gruss,
        wahsaga