Regex Extrahieren Sie Zahlen und DezimalzahlenIch habe eine Spalte und muss die Zahlen aus den Zeichenfolgen in jeder Zeile extrahieren. Die Zahlen können Dezimalzahlen sein oder nicht.
Ich verwende diese Formel: Regex( :PIPE_LENGTH, "[^(\d+\.\d+)]", "", globalreplace )
Beispiele:
Saite: Länge = 3,5".Von John abgeschlossen.
Erwartet: 3.5
Tatsächlich: 3,5.
Beispiel 2:
Für CEC abgeschlossen. Rohrtiefe: 4,5 Zoll (MER)
Erwartet: 4.5
Tatsächlich: .4.5()
Warum kommen die zusätzlichen Punkte und Klammern? Außerdem verwirrt mich das ^ am Anfang. Wenn ich es entferne, erhalte ich nur Text und keine Zahlen.
Danke
Betreff: Regex Extrahieren von Zahlen und DezimalzahlenAutsch!
Der Text-Explorer verwendet dieses Muster für Zahlen
([\-\+]? ?[\.,]?[0-9][\.,0-9]*( ?e ?[\-\+]? ?\d+)?)
man liest es von links nach rechts
- ein optionales + oder -
- ein optionales Leerzeichen
- optionaler Punkt oder Komma
- eine erforderliche Ziffer
- Null oder mehr Punkte, Kommas und Ziffern
- ein optionaler Exponent (mit optionalen Bits und Teilen darin)
Die Kommas und Punkte sind austauschbar, da in verschiedenen Ländern unterschiedliche Standards für die Darstellung von Dezimalstellen und Tausendertrennzeichen gelten. Es könnten einige seltsame Zeichenfolgen durchschlüpfen, bei denen es sich nicht um Zahlen handelt. Daher sollten Sie Ihren Code so schreiben, dass er davon ausgeht, dass die Funktion num() möglicherweise einen fehlenden Wert zurückgibt.
Betreff: Regex Extrahieren von Zahlen und DezimalzahlenIch dachte an einen anderen Fall: „Mark hat sich 0,5“ seines Fingers abgeschnitten.“ Ich stecke fest! Ich kann meine Regex mit diesem und den anderen Fällen nicht zum Laufen bringen. Es ist das eine oder das andere Gehäuseset!
Mit „Vorausschauen“...
Names Default to Here( 1 );
PIPE_LENGTH = "Length = 3.5\!". Completed by John.";
PIPE_LENGTH = "Completed for CEC. Pipe depth- 4.5\!" (MER)";
PIPE_LENGTH = "John cut 5\!"";
PIPE_LENGTH = "Mark cut .5\!" off his finger.";
Regex( PIPE_LENGTH, "\D*(?=\.)?(\d*\.?\d*)\D*", "\1" );
Ich frage mich, ob die Verwendung von JMP Patterns einfacher wäre.
@Craige_Hales , Wo bist du???
Betreff: Regex Extrahieren Sie Zahlen und DezimalzahlenPerfekt. Vielen Dank für die schnelle Hilfe bei einem Stumper für mich.Betreff: Regex Extrahieren Sie Zahlen und DezimalzahlenRegex( PIPE_LENGTH, "\D*(\d+\.?\d*)\D*", "\1" );
Betreff: Regex Extrahieren von Zahlen und DezimalzahlenDas ist besser. Ich habe ein Szenario wie:
John schnitt 5"
Dies hat keine Dezimalzahl. Ihr Beispiel gibt leer zurück.
Danke
Betreff: Regex Extrahieren von Zahlen und DezimalzahlenSieht aus, [^(\d+\.\d+)] wählt alles außer Zahlen, Dezimalzahlen und Satzzeichen aus. die Sie durch „“ ersetzen. Was übrig bleibt, sind Ihre Zahlen, Dezimalzahlen und Satzzeichen (). Dieser Ausdruck verhält sich wie erwartet. Ich habe es auch an Ihrem Beispiel getestet und komme zum gleichen Ergebnis.
Würde so etwas funktionieren?
Regex( :PipeLength, "(\d+.\d+)", "\1" )
Ich bin mir nicht sicher, wie der Rest Ihrer Daten aussieht, aber dieser Ausdruck ermittelt nur die Zahlen und Dezimalstellen, die Sie benötigen. Bei Ihren beiden Beispielen hat es funktioniert.