标签:python regex fuzzy-comparison pypi-regex
我正在使用Regex模块的“模糊匹配”功能.
如何获得“匹配”的“模糊值”,表明模式与字符串有多么不同,就像Levenshtein中的“编辑距离”一样?
我以为我可以在Match对象中获取值,但它不存在.官方文件也没有提及任何相关内容.
例如.:
regex.match('(?:foo){e}','for')
a.captures()告诉我“for”这个词是匹配的,但是我想知道模糊值,在这种情况下应该是1.
有没有办法实现这一目标?
解决方法:
>>> import difflib
>>> matcher = difflib.SequenceMatcher(None, 'foo', 'for')
>>> sum(size for start, end, size in matcher.get_matching_blocks())
2
>>> max(map(len, ('foo', 'for'))) - _
1
>>>
>>>
>>> matcher = difflib.SequenceMatcher(None, 'foo', 'food')
>>> sum(size for start, end, size in matcher.get_matching_blocks())
3
>>> max(map(len, ('foo', 'food'))) - _
1
http://docs.python.org/2/library/difflib.html#difflib.SequenceMatcher.get_matching_blocks
http://docs.python.org/2/library/difflib.html#difflib.SequenceMatcher.get_opcodes
标签:python,regex,fuzzy-comparison,pypi-regex 来源: https://codeday.me/bug/20190709/1409496.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。