Ich brauche eine Regex, um sowohl Integer-Werte als auch Float-Zahlen zu finden (während Float-Zahlen ein "." als Trennzeichen haben). Diese Zahlen befinden sich immer in einer Klammer und können ein vorangestelltes "+" haben.
Was sollte gelten:
Was sollte ungültig sein:
Dies sollte auf den meisten Perl wie Regex-Engines funktionieren:
%Vor%Leider ist die aktuell akzeptierte Antwort fehlerhaft (sie wird "1a5" entsprechen, aber nicht ".5"). Also habe ich beschlossen, meine eigene Regex zu schreiben, sowie ein billiges Perl-Skript, um es zu testen.
Der Regex passt zu einer Ganzzahl oder Gleitkommazahl mit einem vorangestellten Vorzeichen. Ich interessiere mich nicht für E-Notation, also ignorierte ich es.
nhahtdh erwähnt "(5.) und (.6)": "5." sieht nicht richtig für mich aus, die nachlaufende Periode hat keinen Zweck. Jedoch ist ".6" tatsächlich gültig, da die führende Periode einen positiven Wert & lt; 1 (d.h. es ist kurz für "0.6").
Das anfängliche (?=.)
soll sicherstellen, dass eine leere Zeichenfolge nicht übereinstimmt.
Als Bonus habe ich verschachtelte Gruppen verwendet, so dass Sie die verschiedenen Teile der Zahl leicht extrahieren können:
Bitte lassen Sie es mich wissen, wenn ich etwas übersehen habe.
Klammern zu erzwingen ist trivial, wickle das Ganze einfach in ESCAPED-Klammern:
%Vor%Tags und Links regex