Roger: wieder mal das leidige regexp-thema...

moin!

ich hab in einem string einen auszug aus einem logfile. diesen möchte ich formatiert ausgeben, wobei ich die zeile, in der das datum und die uhrzeit steht, gern einfach auf die uhrzeit begrenzen möchte.
die zeile sieht so aus:
Date: 22.07.2001    Time : 16:39

danach folgt wirres zeug ;) in mehreren zeilen und dann geht es weiter mit dem nächsten eintrag. jedoch soll anstatt der zeile oben soll jetzt nur noch
16:39 stehen (plus nat. dem wirren zeug).

das geht doch sicherlich am schnellsten mit nem regexp (wenn man sie anzuwenden weiß...).
weil ich würde es wohl komplizierter machen. den string in ein array legen (da die zeilen mit einem \n enden) und dann zeile für zeile nach "Date" suchen und die zeichen dann per substr() wegschneiden. ist sicherlich nicht die sauberste methode, aber ich machs! *drohung* ;) es sei denn, mir gibt evtl. jemand ein paar tips, wie ich mittels regexp die zeile sauber extrahieren kann. help?

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. Moin,

    das geht doch sicherlich am schnellsten mit nem regexp (wenn man sie anzuwenden weiß...).

    Wozu RegExp? 'strpos', 'substr'.

    lg, Konrad -

    --
    Der Genitiv ist des Dativs Tod
    1. moin!

      dadurch knapp 1000 uhrzeiten zu ersetzen sind, dachte ich, dass es per regexp performanter wäre...

      gruß.
      roger.

      --
      Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
      1. Hallo Roger,

        dadurch knapp 1000 uhrzeiten zu ersetzen sind, dachte ich, dass es per regexp performanter wäre...

        regexp sind nicht performant, die tarnen sich nur so.

        Gruß, Andreas

        --
        SELFFORUM - hier werden Sie geholfen,
        auch in Fragen zu richtiges Deutsch
        1. moin!

          regexp sind nicht performant, die tarnen sich nur so.

          die schweine!
          also wirklich mit strpos und substr und so? oder weiß nur keiner so recht wie? :D

          gruß.
          roger.

          --
          Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
          1. ich würde es wohl komplizierter machen. den string in ein array legen (da die zeilen mit einem \n enden) und dann zeile für zeile nach "Date" suchen und die zeichen dann per substr() wegschneiden.

            ich glaube, das ist gar nicht so schlecht. Der schon erwähnte Vorschlag, "strpos()" zu verwenden ist sicher auch nicht schlecht - Vorraussetzung ist halt, daß Du eine Zeichenkette fester Länge löschen kannst. Wenn das Date-Format jedesmal anders aussieht: schlecht. Je mehr Du direkte Zeichenketten suchen kannst, desto besser - glaub ich, hehe... bin da auch kein Profi in den Interna, aber regExp ist wirklich langsam, weil es intern eben diese ganzen Schleifen und rekursiven Funktionen aufwirft.

            Vielleicht wäre es auch gut, Du trennst mit explode() an "Date:" und nicht an "\n", weil das wesentlich weniger Elemente ergibt. Geht aber nur, wenn Du sicher bist, daß "Date" sonst nicht vorkommt.

            Gruß, Andreas

            --
            SELFFORUM - hier werden Sie geholfen,
            auch in Fragen zu richtiges Deutsch
            1. moin!

              Vielleicht wäre es auch gut, Du trennst mit explode() an "Date:" und nicht an "\n", weil das wesentlich weniger Elemente ergibt. Geht aber nur, wenn Du sicher bist, daß "Date" sonst nicht vorkommt.

              das weiß ich eben nicht. deswegen ist wohl \n der sichere weg ;)

              gruß.
              roger.

              --
              Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
              1. Vielleicht wäre es auch gut, Du trennst mit explode() an "Date:" und nicht an "\n", weil das wesentlich weniger Elemente ergibt. Geht aber nur, wenn Du sicher bist, daß "Date" sonst nicht vorkommt.

                das weiß ich eben nicht. deswegen ist wohl \n der sichere weg ;)

                Du könntest vielleicht an "\nDate:" trennen. An irgendeiner Stelle triffst Du doch die Entscheidung, was nach \n als Merkmal ausreicht um eine "gefundene" Zeile zu sein.

                Gruß, Andreas

                --
                SELFFORUM - hier werden Sie geholfen,
                auch in Fragen zu richtiges Deutsch
      2. Moin,

        dadurch knapp 1000 uhrzeiten zu ersetzen sind, dachte ich, dass es per regexp performanter wäre...

        Wie kommst Du zu dieser Annahme? Reguläre Ausdrücke sind implementierungsbedingt so ziemlich das langsamste, was einem bei Stringbearbeitung unterkommen kann.
        Ich sage nicht, dass man sie nicht verwenden soll -- nur eben nicht dort, wo sie wirklich nicht gebraucht werden.

        lg, Konrad -

        --
        Der Genitiv ist des Dativs Tod