使用 bitap 算法查找模糊匹配

发布于 2024-08-13 08:44:03 字数 244 浏览 6 评论 0原文

最近我研究了bitap算法的几种实现,但它们所做的都是找到模糊匹配的起点。我需要的是找到一个匹配。有一个例子:

假设我们有以下文本:abcdefg

和模式:bzde

,我们希望找到文本中模式的所有出现,最多有 1 个错误(考虑编辑距离)。

所以我需要算法返回:bcde。

有没有简单(或不简单=))的方法来做到这一点? 关于该算法的原始文章没有回答这个问题。

感谢您的帮助。

Reciently I've looked through several implementation of bitap algorithm but what all of them do is finding the beginning point of fuzzy match. What I need is to find a match. There's an example:

Say we have following text: abcdefg

and a pattern: bzde

and we want to find all occurence of a pattern in text with at most 1 error (Edit distance is concidered).

So I need that the algorithm returns: bcde.

Is there a simple (or not simple =) ) way to do it?
The original artical about this algorithm doens't answer the question.

Thank you for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

或十年 2024-08-20 08:44:03

对于简单的开始,您可以使用一系列正则表达式来处理它,其中在每个表达式中用 . 通配符替换 1 个字符。使用 ( | ) 构造将这些表达式组合成一个,以创建一个大的正则表达式。

另一种方法是扫描字符串,保留错误计数,并在遇到太多错误时增加匹配的偏移量。

For a simple start you could approach it with a series of regular expressions where in every expression you replace 1 character with the . wildcard. Combining those expressions into one using the ( | ) construct to create one big regular expression.

Another way would be to scan the string keeping an errorcount and incrementing the offset you match at when too many errors are encountered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文