StringRegExp - Unterscheidung

  • Hallo,

    ich habe einen Textstring der Uhrzeiten enthält ("hh:mm:ss" oder "h:mm:ss") sowie auch Strings der Form "[d:dd:dd]" (d: digits 0-9) nun sollen nur die Uhrzeiten extrahiert werden - aber nicht die der anderen Form miterfasst werden.

    solange ich nur die Uhrzeiten möchte ist es einfach:

    $array = StringRegExp ( $text, "([012][0-9]:[0-5][0-9]:[0-5][0-9])|([0-9]:[0-5][0-9]:[0-5][0-9])" , 3 )

    aber "[d:dd:dd]" auszuschliessen bereitet mir Mühe.

    Versuche mit vorstehnden (?:[^[]) - bzw. abschliessenden (?:[^[]) bringen das gewünschte Ergebnis nur teilweise, weil wenn der $text="1:22:00 blabla 2:33:00" heißt, dann die Zeiten am Anfang bzw. Ende gar nicht erfasst werden.
    Am einfachsten ginge es wenn man auch einen Nullstring "" als alternative hätte.

    (Bsp.: "((?:[^[])[012][0-9]:[0-5][0-9]:[0-5][0-9](?:[^[]))|([^[][0-9]:[0-5][0-9]:[0-5][0-9][^[])")


    Hat jemand eine Idee dazu?

    Eventuell könnte man beide Ausdrücke parallel suchen und via Positionskontrolle voneinander trennen...

  • Mal ein Beispiel dazu: