[英]How can I match strings precisely and avoid false matches?
背景-网络应用后端的javascript / dojo代码。
我需要将用户输入的字符串与可能的车辆型号列表进行匹配,并且由于匹配不正确而遇到了挑战。
假设用户输入:
Ford Fusion, S 60, and Volks Wagen
目前,我会读为
FORDFUSIONS60VOLKSWAGEN
这样,我就可以与一系列的品牌和型号相匹配。
问题是,在这种情况下,以及在许多其他情况下,您将得到"S6" (Audi) "
和"S60" (Volvo)
,或者"Accord" (Honda)
或"CC" (Volkswagen)
。
知道如何避免这些模棱两可的匹配吗?
为了避免至少两个示例,您首先要与较长的名称匹配(例如,对于“ s6”之前的“ s60”和“ cc”之前的“ accord”),如果不匹配,则使用较短的名称。 否则退出与更长的。
至于寻找最长的匹配项,您还可以检查结果名称中是否包含另一个,然后跳过它们。
这就是我要做的:
使用名称,型号和公司运行检查,如果它们追溯到相同的引用,则说明您拥有所需的东西。 但是,如果得到不同的结果,请继续尝试所有搜索结果的组合,直到它们与单个参考匹配为止。
例如: model traces back to honda and ford,
number traces back to ford and bentley,
而company gives ford
那么您可以尝试组合list_1,list_2和list_3,其中: list_1 = ['honda','ford']
list_2 = ['ford','bentley']
list_3 = ['ford']
然后,当您尝试所有组合(我建议itertools.combinations
)时,您将得到一个在所有列表中都通用的有效结果: ford
我希望这很清楚。 我知道我有点无聊。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.