Horst Meier: Regular Expression

Hi Ich habe verschiedenen Strings die wiefolgt formatiert sind:

<param name="movie" folder/2/img/start/movie21343.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="235" height="151" name="bronx235x151" />

Ich würde nun gerne eine Regular Expression haben, die mir nur den Namen des SWF File zurückgibt. Wie müsste hier das Statement aussehen?

  1. Hi Ich habe verschiedenen Strings die wiefolgt formatiert sind:

    <param name="movie" folder/2/img/start/movie21343.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="235" height="151" name="bronx235x151" />

    Sehe ich das richtig, dass dies kaputtes HTML ist?

    Ich würde nun gerne eine Regular Expression haben, die mir nur den Namen des SWF File zurückgibt. Wie müsste hier das Statement aussehen?

    Ist das für ein Bugfix oder soll das eine permanente RegEx werden?

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Das soll ein permanentes RegEx Werden. Es handelt sich bei dem Bespiel auch nur um einen Ausschnitt aus dem HTML. Alles vor dem Datenamen und alles Danach will ich ja eh nicht haben ;)

      Hi Ich habe verschiedenen Strings die wiefolgt formatiert sind:

      <param name="movie" folder/2/img/start/movie21343.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="235" height="151" name="bronx235x151" />

      Sehe ich das richtig, dass dies kaputtes HTML ist?

      Ich würde nun gerne eine Regular Expression haben, die mir nur den Namen des SWF File zurückgibt. Wie müsste hier das Statement aussehen?

      Ist das für ein Bugfix oder soll das eine permanente RegEx werden?

      mfg Beat

      1. Mahlzeit Horst Meier,

        Es handelt sich bei dem Bespiel auch nur um einen Ausschnitt aus dem HTML. Alles vor dem Datenamen und alles Danach will ich ja eh nicht haben ;)

        Du bist ein kleiner Clown, oder? Wie soll man eine vernünftige passende RegExp generieren, wenn Du keine vollständigen und korrekten Beispieldaten lieferst? Also - Aufgabe an Dich lautet: nenne uns einen vernünftigen Ausschnitt aus Deinem HTML-Code ... und zwar ohne per Hand daran herumzuprokeln.

        Achja - und lass TOFU bitte bleiben ... das mag keiner hier so wirklich lesen.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Danke für die "freundliche" Antwort.

          Ich hatte einfach nur auf antworten geklickt und vergessen den Text zu löschen mea culpa.

          Ich überprüfe tatsächlich nur diese eine Zeile die ich gepostet habe. Also nochmal langsam. Ich habe einen String (völlig Wurst was für einen) in dem irgendwo dazwischen etwas steht wie value="abscedefg.swf". Ich wollte nunr eine RegEx die mir nur den Teil zwischen den Quotes zurückgibt sofern der String der zwischen den Quotes ist auf swf endet.

          Wusste nicht das ich mich jetzt so kompliziert ausgedrückt habe.

          1. Hi,

            Ich habe einen String (völlig Wurst was für einen) in dem irgendwo dazwischen etwas steht wie value="abscedefg.swf". Ich wollte nunr eine RegEx die mir nur den Teil zwischen den Quotes zurückgibt sofern der String der zwischen den Quotes ist auf swf endet.

            Na das erfordert ja kein sonderlich komplexes Suchmuster.
            Wie sieht denn dein Ansatz aus?

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Ich habe es jetzt so:

              (?:\S+.swf\b)|(?:\S+.SWF\b)

              Wenn allerdings im swf Namen ein Leerzeichen vorhanden ist klappt es nicht mehr fehlerfrei. Außerdem ist diese Lösung nicht sehr elegant.

              1. Ich habe es jetzt so:

                (?:\S+.swf\b)|(?:\S+.SWF\b)

                Wenn allerdings im swf Namen ein Leerzeichen vorhanden ist klappt es nicht mehr fehlerfrei. Außerdem ist diese Lösung nicht sehr elegant.

                Dann handelt es sich nicht mehr um eine URI sondern allenfalls um eine IRI.
                Die Lösung ist insofern unellegant, als sie viel zu viel ausliest.

                /<param \b [^<>]*? \b src \s* = \s* (["']) ([^<>]*?) \1 /xi

                Switch /x für die Lesbarkeit
                Switch /i für Case independence

                \b ist eine word boundery Die Grenze zwischen \w und \W.
                [] ist eine Zeichenklasse
                [^] ist eine negierte Zeichenklasse

                \1 referiert auf $1
                und matcht " wenn in $1 " oder matcht ' wenn in S1 '

                Deine URI oder IRI befindet sich nun in $2.

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
              2. Ich wollte nunr eine RegEx die mir nur den Teil zwischen den Quotes zurückgibt sofern der String der zwischen den Quotes ist auf swf endet.

                (?:\S+.swf\b)|(?:\S+.SWF\b)

                Wenn allerdings im swf Namen ein Leerzeichen vorhanden ist klappt es nicht mehr fehlerfrei.

                In deiner Aufgabenstellung kommt "Leerzeichen" nicht vor, warum ist es also im Suchmuster enthalten?

                ", gefolgt von irgendetwas möglichst kurzem, gefolgt von .swf oder .SWF, gefolgt von " -> '/"(.+?.(swf|SWF))"/'

                Dieses Suchmuster ist aber relativ fehlertollerant, also etwas was Du nicht unbedingt willst.