theripper8472
02.05.2004, 04:04:53
hi
ich bastle an nem computer algebra system und da machen mir gleich am anfang die regulären expressions das leben schwer.
ich will ne dezimalzahl vom anfang eines strings erkennen.
den regex code für floats hab ich aus dem php handbuch genommen und etwas umgeformt.
$str='123.4';
$match='/^(([0-9]+)[.]([0-9]*))/';
$to='x';
$str=preg_replace($match,$to,$str);
//$str ist jetzt 'x'
$str='123.4';
$match='/^( (([0-9]*)[.]([0-9]+)) | (([0-9]+)[.]([0-9]*)) )/';
$to='x';
$str=preg_replace($match,$to,$str);
//$str ist jetzt '123.4'
//wenn die beiden branches in diesem $match vertauscht werden, kommt das gleiche raus
(eigentlich benutze ich preg_match, aber da wäre der beispielcode zu umständlich)
kann mir wer sagen, warum regex hier so seltsam reagiert? eigentlich müsste doch die längste zeichenkette gegriffen werden ("greedy" by default...)
thx
ich bastle an nem computer algebra system und da machen mir gleich am anfang die regulären expressions das leben schwer.
ich will ne dezimalzahl vom anfang eines strings erkennen.
den regex code für floats hab ich aus dem php handbuch genommen und etwas umgeformt.
$str='123.4';
$match='/^(([0-9]+)[.]([0-9]*))/';
$to='x';
$str=preg_replace($match,$to,$str);
//$str ist jetzt 'x'
$str='123.4';
$match='/^( (([0-9]*)[.]([0-9]+)) | (([0-9]+)[.]([0-9]*)) )/';
$to='x';
$str=preg_replace($match,$to,$str);
//$str ist jetzt '123.4'
//wenn die beiden branches in diesem $match vertauscht werden, kommt das gleiche raus
(eigentlich benutze ich preg_match, aber da wäre der beispielcode zu umständlich)
kann mir wer sagen, warum regex hier so seltsam reagiert? eigentlich müsste doch die längste zeichenkette gegriffen werden ("greedy" by default...)
thx