>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
On 19.06.01, 22:25:05, Stefan Troeger
Hi,
On Tue, Jun 19 2001 at 21:38 +0200, Jan Trippler wrote:
On Die, Jun 19, 2001 at 07:32:53 +0000, Florian Brunner wrote:
[Ausschnitte aus Perl-FAQ]
if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { print "is a decimal
Interessant, aber ich sehe bei dem Konstrukt ?: nicht durch. Kann das jemand erklären? In meinen Büchlein habe ich dazu nix gefunden. Die Funktion eines ? ist mir schon klar, aber in der o. g. Konstellation kann ich mit diesem Muster nichts anfangen. :-(
(?: ) dient wie ( ) zur Gruppierung, speichert aber nichts in den Variablen $1, $2 usw.
Was ist der Unterschied in der Mustererkennung zu: /^[+-]?\d*[.,]?\d+$/ (von der Erkennung des Kommas abgesehen, die Vorzeichenerkennung habe ich einfach mal ergänzt)?
Der Regex aus der FAQ passt auch auf Zahlen, die mit einem Punkt enden (1.), ansonsten scheint da kein riesiger Unterschied zu sein.
Und vor allem auch auf Zahlen wie '.5', wenn ich den Ausdruck recht verstehe. Der Ausdruck besagt passt also auf alle Zahlen, die max. 1 Punkt und optional ein '-' als Vorzeichen haben. Beachte auch, dass '.' escaped werden muss ('.' ist ja ein Sonderzeichen in Regexp) (oder ist das bei eckigen Klammern anders - denke nicht?) Wie wärs z.B. mit folgendem Ausdruck: /^[\+-]?(?:\d+(?:[\.\,]\d*)?|[\.\,]\d+)$/ - muss ',' und '+' escaped werden? Wird wohl nicht schaden... Greets Florian