Wildcards .+? und .*? stoppen
Adrian Kousz
- perl
0 Dennis0 Adrian Kousz0 Dennis
hallo
wie kann man machen, dass beim ausdruck ^/.*?/$ der wildcard .*? nach der zweiten klammer nichts mehr findet?
/hallo/hallo/ geht nämlicht auch, sollte aber nur /hallo/ gehen...
vielen dank für eure stetige hilfe!
gruss
adi
Hi Adrian,
wie kann man machen, dass beim ausdruck ^/.*?/$ der wildcard .*? nach der zweiten klammer nichts mehr findet?
/hallo/hallo/ geht nämlicht auch, sollte aber nur /hallo/ gehen...
Ich weiß jetzt nicht genau, wie das bei Perl aussieht, aber das ist doch (wie bei PHP auch) PCRE Standard, oder?
Dann solltest du eine Zeichenklasse definieren können, die alle Zeichen außer einem / matched:
[^/]*
MfG, Dennis.
Hallo Dennis
jep, jetzt hats funktioniert! vielen dank!
ich habe es zuerst noch so probiert: ^/.*?[^/]*?
aber das ging halt auch nicht, aber deine lösung funktioniert perfekt!
viele grüsse
adi
PS: RegExp ist ja "standardisiert", demnach sollte es überall gleich sein. müsste fast noch ein themenbereich RegExp geben, denn das ist ja fast wie eine Programmiersprache die nur zum suchen ist...
Hi Adrian,
ich habe es zuerst noch so probiert: ^/.*?[^/]*?
aber das ging halt auch nicht, aber deine lösung funktioniert perfekt!
Das geht deshalb nicht, weil das .* alle Zeichen matched, die passen und dem [^/]* nichts mehr übrig lässt - gehen sollte es allerdings, wenn du [^/]+ schreibst, denn dann _muss_ noch mindestens ein Zeichen dieser Klasse kommen.
MfG, Dennis.