【发布时间】:2019-11-06 21:03:11
【问题描述】:
假设我有以下列表:
abc_Pickled_efg
abc_Pickller_efg
abcd_something_Picklesefgh
efg_Pickles_abc
还有正则表达式模式:
abc.*Pickles.*efg
列表中的这些都不匹配模式。但是我将如何找到最接近的匹配项(在本例中为 abc_Pickled_efg)。是否有一些 Python 模块或可以说明某事是 92% 匹配还是 0% 匹配或什么的?
我的想法是我可以遍历模式并查看每个符号是否匹配,即:
a => a = 1 point
b => b = 1 point
c => c = 1 point
.* => _ = 1 point
P => P = 1 point
i => i = 1 point
c => c = 1 point
k => k = 1 point
l => l = 1 point
e => e = 1 point
r => d = 0 point
.* => _ = 1 point
e => e = 1 point
f => f = 1 point
g => g = 1 point
-----------------
14 points out of 15 possible ~= 93% match
这有意义吗?或者有什么东西可以做这样的事情吗?
【问题讨论】:
-
这能回答你的问题吗? Best Fuzzy Matching Algorithm?
-
可以编写一个新的正则表达式引擎,通过特殊的回溯等来做到这一点。在哪里设置特殊选项
Pickl?e?s? -
为什么
abc_Pickled_efg呈现最接近的匹配而不是abcd_something_Picklesefgh?您在第二个字符串中的匹配比在第一个字符串中更多。 -
@alfasin 是的,看起来就像我在这里尝试的一样
-
@ctwheels 你是对的。这只是我拼凑的一个例子,并没有仔细看,但认为我明白了我的意思。谢谢