Regex Extraire des nombres et des décimalesJ'ai une colonne et j'ai besoin d'extraire les nombres des chaînes de chaque ligne. Les nombres peuvent être décimaux ou non.
J'utilise cette formule: Regex( :PIPE_LENGTH, "[^(\d+\.\d+)]", "", globalreplace )
Exemples:
Corde : Longueur = 3,5".Complété par Jean.
Attendu : 3,5
Réel : 3.5..
Exemple 2 :
Terminé pour CEC. Profondeur du tuyau - 4,5" (MER)
Attendu : 4,5
Réel : .4.5()
Pourquoi les points supplémentaires et les parenthèses arrivent-ils ? Aussi, je suis confus par le ^ au début. Lorsque je le supprime, je n'obtiens que du texte et non des chiffres.
Merci
Re : Regex extrait des nombres et des décimalesAie!
L'explorateur de texte utilise ce modèle pour les nombres
([\-\+]? ?[\.,]?[0-9][\.,0-9]*( ?e ?[\-\+]? ?\d+)?)
en le lisant de gauche à droite
- un + ou - facultatif
- un espace en option
- point ou virgule facultatif
- un chiffre obligatoire
- zéro ou plusieurs points, virgules et chiffres
- un exposant facultatif (avec des éléments facultatifs à l'intérieur)
les virgules et les points sont interchangeables en raison de normes différentes dans divers pays concernant la manière dont les décimales et les séparateurs de milliers sont représentés. Il y a des chaînes étranges qui pourraient passer et qui ne sont pas des nombres, vous devez donc écrire votre code pour vous attendre à ce que la fonction num() renvoie une valeur manquante.
Re : Regex extrait des nombres et des décimalesJ'ai pensé à un autre cas : "Mark a coupé 0,5" de son doigt." Je suis coincé! Je n'arrive pas à faire fonctionner mon regex avec ce cas et les autres. C'est un ensemble de cas ou l'autre !
Utilisation de l'anticipation...
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" );
Je me demande si l'utilisation de modèles JMP serait plus facile.
@Craige_Hales , où es-tu???
Re : Regex extrait des nombres et des décimalesParfait. Merci pour l'aide rapide sur une souche pour moi.Re : Regex extrait des nombres et des décimalesRegex( PIPE_LENGTH, "\D*(\d+\.?\d*)\D*", "\1" );
Re : Regex extrait des nombres et des décimalesC'est mieux. J'ai un scénario tel que:
Jean coupe 5"
Ceci n'a pas de décimale. Votre exemple revient vide.
Merci
Re : Regex extrait des nombres et des décimalesLooks [^(\d+\.\d+)] sélectionne tout sauf les nombres, les décimales et la ponctuation. que vous remplacez par "". Ce qui reste sont vos nombres décimaux et ponctuation (). Cette expression se comporte comme je m'y attendais. Je l'ai également testé sur votre exemple et j'obtiens le même résultat.
Est-ce que quelque chose comme ça fonctionnerait?
Regex( :PipeLength, "(\d+.\d+)", "\1" )
Vous ne savez pas à quoi ressemblent le reste de vos données, mais cette expression extrait uniquement les nombres et les décimales dont vous avez besoin. Cela a fonctionné sur vos deux exemples.