기술자가 입력한 텍스트 메모가 포함된 열이 있습니다. 시스템 사용 시간을 입력하면 자체 열로 추출해야 합니다. 다행스럽게도 데이터가 매우 일관적이어서 Regex Match()를 사용하여 정보를 추출할 수 있었지만 마지막 값을 선택하는 데 문제가 있었습니다.
Regex Match( :diagnosis, "(ys.+sage: ?)(\d{1,5})\n" );텍스트 블록에서 시스템 사용 시간을 어떻게 효과적으로 추출합니까?
샘플 텍스트는 다음과 같습니다.
UDI# 123456789123456789123456789456123
기기를 받았지만 덮개가 없습니다.
주요 서비스 이유: xxxxxxxxxx
시스템 사용량: 2372
시스템 PM 기한: 7627
xxx 사용량: 120
yyy 사용량: 208
다음은 JSL 기능을 사용하여 시스템 사용량을 추출하는 솔루션입니다.
Num( Word( 1, Substr( :Diagnosis, Contains( :Diagnosis, "System usage:" ) + 14 ), "\!n" ) )

위의 데이터 표를 첨부했습니다
데이터가 충분히 일관성이 있으면 포함(및 길이)이 있는 Substr을 사용하여 정규식 없이 이 작업을 수행할 수 있습니다.
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: 또는 단어와 단어를 사용하여:
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);
편집2:</CODE> 그리고 마지막으로 동일한 텍스트로 정규식:</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]);