需要在 JSL 中基於不相同的字串連接兩個表(使用正規表示式?)你好,
我有一個從測試站導入的 JSL 表。
該站報告指標和一些屬性,包括被測設備的配置代碼。
我的目標是根據配置程式碼將另一個表(配置矩陣)與一些分類資訊(組件供應商等)連接起來。
不幸的是,該站報告的配置代碼與配置矩陣並非 100% 匹配(區分大小寫、缺少字母、額外的“-”,...)
我想找到一種強大的方法來匹配它們,我認為 Regex 函數是最好的,但我有點不知所措。
我在這個論壇上查看了很多討論此功能的帖子,但我還沒有找到足夠接近我的用例來讓我開始。
預先感謝您的幫助
- 傳教士
下面是要匹配的 2 列的範例,我使用第三列透過替換()刪除“-”,並使用第四列進行比較,但在大多數情況下匹配仍然很弱。

New Table( "untitled 1",
Add Rows( 8 ),
New Column( "Tester config output",
Character,
"Nominal",
Set Values(
{"U4002LKR1B", "4005FGG1A", "U3001PL-2jR", "U5011G1A", "5001BLG1D",
"U5003R2A", "U4005BLG1B", "U6034UBLG2A"}
),
Set Display Width( 114 )
),
New Column( "config matrix name",
Character,
"Nominal",
Set Values(
{"U4002-LK-R1B", "U4005-FG-G1A", "U3001-PL-2JR", "U5011-G1A",
"U5001-BL-G1D", "U5003-R2A", "U4005-BL-G1B", "U6034-UBL-G2A"}
)
),
New Column( "Clean Config Matrix Name",
Character,
"Nominal",
Formula( Substitute( :config matrix name, "-", "" ) )
),
New Column( "Column 4",
Character,
"Nominal",
Formula( If( :Clean Config Matrix Name == :Tester config output, "Match" ) )
)
)
自動化和腳本編寫回覆:需要在 JSL 中根據不同的字串連接兩個表(使用正規表示式?)除非您可以指定應遵循的所有規則,否則我建議使用“選擇最接近”函數(或最短編輯腳本)之類的東西。這篇文章也許可以提供一些想法, 使用 JSL 在 Recode 平台中編寫「分組相似值」功能的腳本。
回覆:需要在 JSL 中根據不同的字串連接兩個表(使用正規表示式?)我可能對你想要做的事情不正確,但這是可以做的事情的簡化版本
Names Default To Here(1);
dt1 = New Table("Output",
New Column("Tester config output",
Character,
"Nominal",
Set Values(
{"U4002LKR1B", "4005FGG1A", "U3001PL-2jR", "U5011G1A", "5001BLG1D", "U5003R2A",
"U4005BLG1B", "U6034UBLG2A"}
)
)
);
dt2 = New Table("Config",
New Column("config matrix name",
Character,
"Nominal",
Set Values(
{"U4002-LK-R1B", "U4005-FG-G1A", "U3001-PL-2JR", "U5011-G1A", "U5001-BL-G1D",
"U5003-R2A", "U4005-BL-G1B", "U6034-UBL-G2A"}
)
),
New Column("R", Numeric, Nominal, Set Values(1::8))
);
Summarize(dt2, groups = By(:config matrix name));
dt1 << new column("N", Character, Nominal);
For Each Row(dt1,
:N = Choose Closest(:Tester config output, groups, Ignore Case(1), Ignore Whitespace(1), Ignore Nonprintable(1), Max Edit Count(2), Max Edit Ratio(0.1));
);
dt1 << Update(
With(dt2),
Match Columns(:N = :config matrix name),
Replace Columns in Main Table(None)
);
Write();
回覆:需要在 JSL 中根據不同的字串連接兩個表(使用正規表示式?)嗨,賈莫,
非常感謝您的回饋,
我在更大的資料集上嘗試了這段腳本,它似乎足夠準確,它匹配的時間超過 96%。
我將「Replace Unmatched( 1 ), Unmatched (value= "NoMatch" )」新增至 Choose Closest () 的參數中,以確保它在沒有匹配項時進行標記。
再次感謝您的幫助:)
牧師