需要在 JSL 中根据不相同的字符串连接两个表(使用正则表达式?)你好,
我有一个从测试站导入的 JSL 表。
该站报告指标和一些属性,包括被测设备的配置代码。
我的目标是根据配置代码,将另一个表(配置矩阵)与一些分类信息(组件供应商,...)连接起来。
不幸的是,该站报告的配置代码与配置矩阵不完全匹配(区分大小写、缺少字母、多余的“-”……)
我想找到一种强大的方法来匹配它们,我认为 Regex 函数是最好的,但我有点不知所措。
我查看了论坛上很多讨论此功能的帖子,但还没有找到与我的情况足够接近的用例来帮助我开始。
提前感谢您的帮助
- 传教士
下面是要匹配的两列的示例,我使用第三列和 substitute() 删除“-”,并使用第四列进行比较,但大多数情况下匹配仍然很弱。

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%。
我在“选择最近” () 的参数中添加了“替换不匹配 ( 1 )、不匹配 (值 = “NoMatch” ),以确保在没有匹配时进行标记。
再次感谢你的帮助:)
牧师