phpbar.de logo

Mailinglisten-Archive

[php] Regex-Problem

[php] Regex-Problem

Sebastian Mendel lists at sebastianmendel.de
Die Sep 22 12:59:09 CEST 2009


On 22.09.2009 12:06, Tim wrote:
> Hallo Sebastian,
>
> danke für Deine Antwort.
>
>
>
>>> also statt [a-z_]* so [a-z_]+
>>>
>>> bekomme ich nur den ersten Buchstaben des jeweiligen Feldes. Also
>> hier
>>> "l". Was mich wundert, denn ich dachte, dass das + bedeutet, dass
>>> mindestens ein oder mehr Zeichen gefunden werden. Mehr wundert
>> mich,
>>> dass es mit dem Sternchen gar nicht klappt.
>>>
>>> Vielleicht habt ihr ja eine Idee?
>>
>>    * bedeutet 0 oder mehr, also optional
>>    + bedeutet 1 oder mehr, also indestens 1
>
> Genau so hatte ich das auch verstanden, war vielleicht etwas blöd
> ausgedrückt von mir.

naja, und so bald die Bedingung erfüllt ist hört er auf, das ist nunmal 
bei * sofort und bei + nach dem ersten Zeichen


>> und beides ist ja erfüllt, das + nach dem ersten Zeichen und das *
>> sofort
>>
>> du musst genau sagen bso wohin das gehen soll, z. B.:
>>
>> <span[^>]+"my-field--([a-z_]+)"
>
>
> Ich verstehe nicht genau, was Du mit den Anführungszeichen bezwecken
> möchtest. Problematisch ist dann auch, dass z.B. der Internet Explorer
> im editierbaren IFRAME hingeht und die Anführungszeichen entfernt. Der
> SPAN sieht dann so aus:
>
> <span class=my-field--lastname>[Nachname]</span>
>
> Demnach weiß ich nicht, was nach der gesuchten Buchstabengruppe kommt.
> Entweder die schließende spitze Klammer, oder ein Anführungszeichen bzw.
> das doppelte Anführungszeichen oder eben noch weitere Einstellungen für
> den SPAN wie id, style etc.

dann eben so:

<span[^>]+my-field--([a-z_]+)[\s">]+


> <span class=my-field--lastname>[Nachname]</span>
>                                |-----------------|
>
> Daher dachte ich mir es wäre sinnvoll, nach der gesuchten
> Buchstabengruppe alles als gültig zu markieren, was bis zum schließenden
> SPAN geht (siehe Markierung).

ja, das passt ja auch, deshalb findet er ja auch was, deine Klammer ist 
nur falsch, denn * bedeutet optional und das ist sofort erfüllt, also 
geht es außerhalb der Klammer mit dineem .* weiter, was alles bis 
"</span>" einschließt


> Was ich halt nicht verstehe ist, dass es im RegexCoach klappt und in PHP
> nicht.

greedy und ungreedy

^^ such mal danach


-- 
Sebastian Mendel

php::bar PHP Wiki   -   Listenarchive