【发布时间】:2013-06-06 02:35:04
【问题描述】:
我正在使用Regex 模块的“模糊匹配”功能。
我怎样才能得到一个“匹配”的“模糊值”,它表明模式与字符串有多么不同,就像 Levenshtein 中的“编辑距离”一样?
我以为我可以在 Match 对象中获取值,但它不存在。官方文档也没说什么。
例如:
regex.match('(?:foo){e}','for')
a.captures() 告诉我“for”这个词是匹配的,但我想知道模糊度值,在这种情况下应该是 1。
有什么方法可以实现吗?
【问题讨论】:
-
这当然不理想,但如果所有其他方法都失败了,您可以尝试使用
(?:foo){e<=i}重复尝试,在其中循环某个整数i。第一次匹配时,i是 Levenshtein 距离。 -
或者,如果您正在处理有限数量的错误,您可以使用
(foo)|((?:foo){e=1})|((?:foo){e=2})之类的东西并检查哪个组匹配,如果第一个 e = 0,第二个 e = 1,等等。
标签: python regex fuzzy-comparison pypi-regex