Extrahieren einer Zahl aus einem TextfeldIch habe eine Spalte mit Textnotizen, die von Technikern eingegeben wurden. Sie geben die Systemnutzungsstunden ein, die ich in eine eigene Spalte extrahieren muss. Glücklicherweise sind die Daten ziemlich konsistent, und so konnte ich die Informationen mit Regex Match() abrufen, aber die Auswahl des letzten Werts bringt mich zum Stolpern.
Regex Match( :diagnosis, "(ys.+sage: ?)(\d{1,5})\n" );Wie extrahiere ich die Systemnutzungsstunden effektiv aus dem Textblock?
Beispieltext sieht so aus:
UDI# 123456789123456789123456789456123
Gerät erhalten, Abdeckung fehlt.
Hauptgrund für den Service: xxxxxxxxxx
Systemnutzung: 2372
System-PM fällig in: 7627
xxx-Nutzung: 120
JJJJ-Nutzung: 208
AnalytikDatentabelleBetreff: Extrahieren einer Zahl aus einem TextfeldHier ist eine Lösung, die JSL-Funktionen verwendet, um die Systemnutzung zu extrahieren
Num( Word( 1, Substr( :Diagnosis, Contains( :Diagnosis, "System usage:" ) + 14 ), "\!n" ) )

Ich habe die obige Datentabelle angehängt
Betreff: Extrahieren einer Zahl aus einem TextfeldWenn die Daten konsistent genug sind, können Sie dies ohne Regex tun, indem Sie „Substr“ mit „Contains“ (und „Länge“) verwenden.
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: Oder mit Words und 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> Und schließlich Regex mit demselben Text:</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]);