Reguläre Ausdrücke
Bevan
- php
0 Marc Reichelt0 Dennis
0 André Laugks0 Bevan
Hallo!
Ich habe mich bisher immer um reguläre Ausdrücke gedrückt, aber jetzt wird es unvermeidlich. Also habe ich mich damit auseinandergesetzt und etwas versucht:
Ich habe einen String der wie folgt lautet
$binstring = "000001101,010000";
hier möchte ich die 0en am Anfang und am Ende abschneiden und habe folgendes geschrieben:
$binstring = preg_replace ("/^0*(.*)0*$/", "$1", $binstring);
Allerdings schneidet er nur die vorderen 0en ab. (also das Ergebnis lautet 1101,010000).
Ich suche schon eine ganze Weile aber finde keinen Fehler. Es wäre nett, wenn mir jemand auf die Sprünge hilft :-)
Michael
Hallo Bevan,
ich habe herausgefunden, wie das Ergebnis zustandekommt - allerdings habe ich nicht gleich einen Lösungsansatz für dein Problem. Hier trotzdem das Zusandekommen des Resultats:
$binstring = preg_replace ("/^0*(.*)0*$/", "$1", $binstring);
Der Reguläre Ausdruck wird von links nach rechts interpretiert. Demnach gehören die letzten Nullen immer noch zu (.*). Logisch, nicht? ;-)
Jetzt fehlt nur noch einer der Profis in regulären Ausdrücken, um dir die Lösung mitzuteilen.
Bis dann!
Marc Reichelt || http://www.marcreichelt.de/
Hi Marc,
$binstring = preg_replace ("/^0*(.*)0*$/", "$1", $binstring);
Der Reguläre Ausdruck wird von links nach rechts interpretiert. Demnach gehören die letzten Nullen immer noch zu (.*). Logisch, nicht? ;-)
Ja, Reguläre Ausdrücke mit * (oder auch +) sind gefräßig - die reißen sozusagen alles an sich, wenn es irgendwie passt ;-)
Jetzt fehlt nur noch einer der Profis in regulären Ausdrücken, um dir die Lösung mitzuteilen.
Hehe, ich fühle mich geschmeichelt ;-))
Nutze den Modifier U um den RegEx ungreedy (nicht hungrig) zu machen - alternativ müsste es auch gehen, wenn du (.*?) schreibst.
MfG, Dennis.
Hallo!
$binstring = "000001101,010000";
hier möchte ich die 0en am Anfang und am Ende abschneiden und habe folgendes geschrieben:
[1]*([1-9].*[1-9])[0]*$
Dein Fehler ist bei Deinem Ausdruck, dass Du mit (.*). (.*) ist sehr gefräßig und nimmt alles bis zum Ende des Strings mit.
André Laugks
0 ↩︎
Hallo!
Danke euch beiden! War wohl ein kleiner Denkfehler aber wär ich alleine nie drauf gekommen :)
Problem gelöst.
Michael