Regular Expression
Horst Meier
- programmiertechnik
0 Beat0 Horst Meier0 EKKi0 Horst Meier0 ChrisB0 Horst Meier1 Beat0 Texter mit x
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?
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
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
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
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.
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
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.
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
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.