Regex Estrai numeri e decimaliHo una colonna e ho bisogno di estrarre i numeri dalle stringhe in ogni riga. I numeri possono essere decimali o meno.
Sto usando questa formula: Regex( :PIPE_LENGTH, "[^(\d+\.\d+)]", "", globalreplace )
Esempi:
Corda: lunghezza = 3,5".Completato da Giovanni.
Previsto: 3.5
Effettivo: 3.5..
Esempio 2:
Completato per CEC. Profondità del tubo: 4,5" (MER)
Previsto: 4.5
Effettivo: .4.5()
Perché arrivano i punti e le parentesi in più? Inoltre, sono confuso dal ^ all'inizio. Quando lo rimuovo ottengo solo il testo e non i numeri.
Grazie
Re: Regex Estrai numeri e decimaliAhia!
Esplora testo utilizza questo modello per i numeri
([\-\+]? ?[\.,]?[0-9][\.,0-9]*( ?e ?[\-\+]? ?\d+)?)
leggendolo da sinistra a destra
- un + o - facoltativo
- uno spazio facoltativo
- punto o virgola facoltativo
- una cifra obbligatoria
- zero o più punti, virgole e cifre
- un esponente opzionale (con bit e pezzi opzionali all'interno)
le virgole e i punti sono intercambiabili a causa dei diversi standard in vari paesi per come sono rappresentati i decimali e i separatori delle migliaia. Ci sono alcune stringhe dispari che potrebbero scivolare che non sono numeri, quindi dovresti scrivere il tuo codice per aspettarti che la funzione num() possa restituire un valore mancante.
Re: Regex Estrai numeri e decimaliHo pensato a un altro caso: "Mark si è tagliato 0,5" del dito". Sono bloccato! Non riesco a far funzionare la mia espressione regolare con questo caso e gli altri. È un set di custodie o l'altro!
Utilizzando guarda avanti...
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" );
Mi chiedo se l'utilizzo di JMP Patterns sarebbe più semplice.
@Craige_Hales , Dove sei???
Re: Regex Estrai numeri e decimaliPerfetto. Grazie per il rapido aiuto su uno stumper per me.Re: Regex Estrai numeri e decimaliRegex( PIPE_LENGTH, "\D*(\d+\.?\d*)\D*", "\1" );
Re: Regex Estrai numeri e decimaliQuesto è meglio. Ho uno scenario come:
Giovanni ha tagliato 5"
Questo non ha decimali. Il tuo esempio sta tornando vuoto.
Grazie
Re: Regex Estrai numeri e decimaliSembra che [^(\d+\.\d+)] selezioni tutto tranne numeri, decimali e punteggiatura. che stai sostituendo con "". Ciò che rimane sono i numeri decimali e la punteggiatura (). Questa espressione si comporta come mi aspetto. L'ho anche testato sul tuo esempio e ho ottenuto lo stesso risultato.
Qualcosa del genere funzionerebbe?
Regex( :PipeLength, "(\d+.\d+)", "\1" )
Non sono sicuro dell'aspetto del resto dei tuoi dati, ma questa espressione sta estraendo solo i numeri e i decimali di cui hai bisogno. Ha funzionato su entrambi i tuoi esempi.