[solved] RegExp - Hilfe. Wie oft kommt Ausdruck in String vor?

  • Hi *


    folgenes Problem..



    ich habe einen solchen string

    Code
    DEH.R11KBK.AP.X0200K.D071008.T190909.D071008.T190909


    oder sogar so

    Code
    DEH.R11KBK.AP.X0200K.D071008.T190909.D071008.T190909.D071008.T190909.D071008.T190909


    und ich moechte jetzt moeglist kurz zaehlen wie oft


    Code
    .D[0-9]{6}.T[0-9]{6}


    in dem string vorkommt. so das ich die anzahl danach in einer variablen habe


    ich hoffe ihr versteht mich ;)


    lg dominique (mentox)

    Einmal editiert, zuletzt von mentox ()

  • Ohne mich wiklich gut damit auszukennen
    wenn .D in keinem anderen zusammen hang vorkomt sonder immer den gesuchten Block einleitet dann könnte man doch einfach zählen wie offt mann mitttels ${foo##*.D} denn letzen Block abschneiden kann.


    Aber wenn das nicht nur an deinem beispie liegt ist das nicht eine einfache rechen aufgabe String länge - 19 / 16

  • Das ist mir noch auf dem Heimweg eingefallen sollte alle Fälle abdecken falls die simplen Lösungen nicht gehen.


    Auch wenn es so geht, geht es sicher auch besser.

  • Moin moin,


    geht auch Perl?


    Wenn ja, ich würd's so machen:


    Code
    $anzahl = ( $string =~ s/\.D[0-9]{6}\.T[0-9]{6}//g );


    oder so

    Code
    $anzahl = ( $string =~ s/(\.D[0-9]{6}\.T[0-9]{6})/$1/g );


    wenn der String so bleiben soll.


    Gruß


    Merten

    SilverStone SST-LC10B-E mit Kram drin damit läuft.
    yaVDR 0.4

  • die kuerzeste Loesung, die mir einfaellt - mit dem geliebten awk natuerlich :) - dann laeuft es auch noch in einer BusyBox


    Code
    awk --re-interval -F'\\.D[0-9]{6}\\.T[0-9]{6}' '{ print NF - 1 }'

    den String einfach nach stdin pipen.

  • moin moin


    muss aus awk noch gawk machen aber damit laeufts super. vielen dank an alle fuer die schnellen antworten.


    hab mich nur fuer awk entschieden weil das hier im projekt schon oefter genutzt wurde. (also auch danke an swer und neves :o))


    gruesse mentox ...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!