istike2
Goto Top

Hilfe bei REGEX

Hi,

Ich habe hier 5 Strings, die ich mit Script filtern sollte.

Kann mir jemand verraten, warum "^[-+]?(\d*\.?\d+|\d+\.)$" es nicht tut? Es sollte eigentlich richtig sein

+1000
3,1415926535
.05
42.
-1

Das Regex sollte möglichst wenig falsche Positivs liefern ...

Vielen Dank für die Hilfe, bin ein ziemlicher Anfänger bezüglich REGEX.

Gr,. I.

Content-Key: 283054

Url: https://administrator.de/contentid/283054

Printed on: April 24, 2024 at 18:04 o'clock

Mitglied: 114757
114757 Sep 16, 2015 updated at 13:54:07 (UTC)
Goto Top
Moin,
was willst du denn erreichen, bzw. davon genau extrahieren und in welchem Kontext Zeilenweise / Gesamt / mit MultiLine Option ?
PI fehlt dir weil du das Komma nicht berücksichtigt hast
^([-+]?\d*[\.,]?\d*)$
Gruß jodel32
Member: istike2
istike2 Sep 16, 2015 at 13:56:16 (UTC)
Goto Top
Ok. Danke

Dies ist eine Testaufgabe, wo dies als richtiges REGEX angegeben wurde. Ich habe versucht bei regex101 nachzuvollziehen hat aber nicht funktioniert.

"[-+]?(\d*\.,?\d+|\d+\.)"

erfasst immerhin die Werte 2-4 nur "+1000" und "-1" fehlen noch.
Mitglied: 114757
114757 Sep 16, 2015 updated at 14:05:57 (UTC)
Goto Top
Dies ist eine Testaufgabe, wo dies als richtiges REGEX angegeben wurde.
Dann zitiere mal die ganze Aufgabe, du schmeißt hier einfach etwas hin ohne Kontext.

Du willst also nur die Zahlen ohne das + oder - davor ?

Wenn du bei diesen Online-Tools die falschen Optionen setzt , z.B. vergisst die MultiLine-Option zu setzen erhältst du andere Ergbnisse als mit, da z.B. das ^ bei gesetzter MutliLine Option bedeutet am Anfang jeder Zeile und nicht nur am Anfang des kompletten Strings!

Das hier matcht alle deine Zahlen ohne das + oder - die Zahlen werden dann in einer matching Group gespeichert(Klammern):
[-+]?(\d*[\.,]?\d*)
Member: istike2
istike2 Sep 16, 2015 at 14:07:21 (UTC)
Goto Top
Danke sehr.

Aufgabe: https://www.youtube.com/watch?v=EkluES9Rvak (bei 26:16)

Mit den ^ bzw mit "gm" wurden auch nur drei Werte erfasst

Ich möchte all die fünf Werte ....

Gr. I.
Mitglied: 114757
Solution 114757 Sep 16, 2015 updated at 14:32:19 (UTC)
Goto Top
Auf deine Zahlen passt dieser Regex nicht ! Wie ich oben schon gesagt habe...
Für deine Zahlen passt der in meinem ersten Post :
^[-+]?(\d*[\.,]?\d+|\d+.)$
Aktivierte Optionen Global /Multiline

In der Sub-Capture-Group 1 sind dann nur die Zahlen
Member: istike2
istike2 Sep 16, 2015 at 14:17:31 (UTC)
Goto Top
Cool. Danke. Ich habe nicht gesehen, dass du auch den Klammer verändert hast, habe bloß "," eingefügt.

Ja, so funktioniert. Vielen Dank. Mit Klammer vorne ergibt es Sinn, ich möchte ja auch + und - erfassen...

Warum wird [-+]?(\d*[\.,]?\d*) bloß als "Accurate" angegeben???
Mitglied: 114757
114757 Sep 16, 2015 updated at 14:22:11 (UTC)
Goto Top
Zitat von @istike2:
Warum wird [-+]?(\d*[\.,]?\d*) bloß als "Accurate" angegeben???
Öhm die haben kein Komma angegeben, weil das Amerikaner sind und keine Deutschen face-smile
Die haben dort als Dezimaltrenner nur den Punkt face-wink
Member: istike2
istike2 Sep 16, 2015 updated at 14:22:56 (UTC)
Goto Top
Hmmm. Du meinst also, dass der Fehler saß auch in diesem Fall vorm PC ... face-smile
Bzw. wer lesen (kopieren) kann scheint auch hier klar im Vorteil zu sein ...

Dies erklärt allerdings nicht, warum sie +- nicht mitgecaptured haben ...
Mitglied: 114757
114757 Sep 16, 2015 updated at 14:39:44 (UTC)
Goto Top
Dies erklärt allerdings nicht, warum sie +- nicht mitgecaptured haben ...
Der Grund ist, damit kein + oder - alleine ohne Zahl gecaptured wird. Denn die Capture-Group dahinter muss entweder die eine oder die andere Bedingung (welche mit | voneinander getrennt sind) erfüllen, ansonsten findet kein Match statt.