Extraire un nombre d'un champ texteJ'ai une colonne contenant des notes de texte saisies par des techniciens. Ils entrent les heures d'utilisation du système, que je dois extraire dans sa propre colonne. Heureusement, les données sont assez cohérentes et j'ai donc pu extraire les informations à l'aide de Regex Match(), mais la sélection de la dernière valeur me fait trébucher.
Regex Match( :diagnosis, "(ys.+sage: ?)(\d{1,5})\n" );Comment puis-je extraire efficacement les heures d'utilisation du système du bloc de texte ?
L'exemple de texte ressemble à ceci :
UDI # 123456789123456789123456789456123
Appareil reçu, couverture manquante.
Raison principale du service : xxxxxxxxxx
Utilisation du système : 2372
PM système dû en : 7627
utilisation xxx : 120
aaa utilisation : 208
AnalytiqueTableau de donnéesRe : Extraire un nombre d'un champ texteVoici une solution qui utilise les fonctions JSL pour extraire l'utilisation du système
Num( Word( 1, Substr( :Diagnosis, Contains( :Diagnosis, "System usage:" ) + 14 ), "\!n" ) )

J'ai joint le tableau de données ci-dessus
Re : Extraire un nombre d'un champ texteSi les données sont suffisamment cohérentes, vous pouvez le faire sans regex en utilisant Substr avec Contient (et Longueur)
Names Default To Here(1);
text ="UDI# 123456789123456789123456789456123
Device received, missing cover.
Major Reason For Service: xxxxxxxxxx
System usage: 2372
System PM due in: 7627
xxx usage: 120
yyy usage: 208";
stringToSearch = "System usage: ";
sysUsage = num(Substr(text, Contains(text, stringToSearch) + length(stringToSearch), 4));
show(sysUsage);Edit1 : Ou en utilisant Words et Word :
Names Default To Here(1);
text ="
UDI# 123456789123456789123456789456123
Device received, missing cover.
Major Reason For Service: xxxxxxxxxx
System usage: 2372
System PM due in: 7627
xxx usage: 120
yyy usage: 208";
list_of_rows = Words(text, "\!N");
Show(list_of_rows);
sysUsage = Word(3, list_of_rows[4]);
Show(sysUsage);
Edit2 :</CODE> Et enfin regex avec le même texte :</P><PRE><CODE class=" language-jsl">Names Default To Here(1);
text ="
UDI# 123456789123456789123456789456123
Device received, missing cover.
Major Reason For Service: xxxxxxxxxx
System usage: 2372
System PM due in: 7627
xxx usage: 120
yyy usage: 208";
//note "\2"
matchRegex = Regex(text, "(System usage: )(\d{1,5})", "\2");
Show(matchRegex);
//note index of number
matchList = Regex Match(text,"(System usage: )(\d{1,5})");
Show(matchList);
Show(matchList[3]);